Filter aus externer Datei beziehen
Mark
- php
0 Anon0 wahsaga0 Mark0 Anon0 wahsaga0 Felix Riesterer0 Mark
0 Andreas Korthaus
Hallo Leute,
Ich arbeite gerade an einem Gästebuch für meine HP und will dort einen Filter einbauen und zwar nicht nur beim Gästebuch sondern auch beim Forum beim Webmailer usw.
Damit ich jetzt nicht jedesmal die Schimpfwörter, die ich dem Filter hinzufügen will in jede Datei extra hineinschreiben muss, wollte ich das ganze mit einer include()-Funktion o.ä. machen, also dass ich die ganzen Filter-Wörter in eine extra Datei schreibe. Wenn ich jetzt aber im GB das mit dem Befehl <? include("filter.txt") ?> versuche, gibt er den Inhalt der Datei filter.txt aus. Ich will aber, dass er den Inhalt nur einliest ohne ihn auszugeben. Wie mach' ich das?
Hi,
die Wörter in ein Array packen vielleicht?
Du musst sie ja eh abgleichen.
Grüsse, Anon
hi,
Wenn ich jetzt aber im GB das mit dem Befehl <? include("filter.txt") ?> versuche, gibt er den Inhalt der Datei filter.txt aus. Ich will aber, dass er den Inhalt nur einliest ohne ihn auszugeben.
dann packe gültigen PHP-code in eine include-datei, inklusive <?php und ?>
gruß,
wahsaga
Hi,
(zu wahsaga:)Des is mir zu umständlich
(zu Anton:)Ich hab' die Wörter bereits in einem Array
Ich will es ungefähr so haben:
$filter_txt=??????;
$filter_founded=0;
$filter=array($filter_txt); //bzw. $filter=$filter_txt;
for ($n=0; $n<count($filter); $n++) { if (eregi($filter[$n], $text)) $filter_founded=1; }
if ($filter_founded==1)
{ usw usw
Ich hab's auch schon mit $filter_txt=file("filter.txt"); versucht, funktioniert aber nicht!?
Hi,
dann nenn die Datei auf jeden fall nicht .txt
sondern filter.inc.php - ist ja dann so wie
wahsaga schon sagte php code, der aber in einer
.txt Datei nichts verloren hat.
Grüße, Anon ohne t :-)
Hi,
noch was,
ob dein Code dann in gewünschter Art und Weise
funktioniert hab ich nicht nachgesehen.
Sieht aber mM. nicht danach aus.
Grüße, Anon
Also nochmal,
Als ich vorhin sagte, dass ich die Wörter schon in einem Array habe, hab' ich mein jetziges Skript gemeint. Und jetzt will ich das eben in diese andere Version umändern. Es muss doch irgendeinen Befehl geben, der einen String in einen PHP-Code inkludiert, oder?!
hi,
Ich hab' die Wörter bereits in einem Array
wo bitte ist denn dann noch das problem?
irgendwie habe ich zweifel, ob das, was du uns hier weis machen willst, irgendeinen bezug zu den realen gegebenheiten hat?
gruß,
wahsaga
Lieber Mark,
Ich hab's auch schon mit $filter_txt=file("filter.txt"); versucht, funktioniert aber nicht!?
So hätte ich es von vornherein gemacht (und tue das auch mit meinem GB). Wenn es "nicht funzt", dann stimmt der Pfad nicht! Korrigiere ihn auf absolut, dann sollte Dein Array $filter_txt gefüllt sein mit vielen schönen bösen Ausdrücken! ;-)
$filter = file("pfad/zur/datei/"."filter.txt");
Liebe Grüße aus Ellwangen,
Felix Riesterer.
Ich hab's jetzt mal folgendermaßen versucht:
$filter_dat=file("./filter.txt");
//================================================================================================================================================ //::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
$textohneleer = str_replace(array(" ",","), "", $text); //Leerzeichen und Kommas usw werden aus Text entfernt
$filter_founded=0;
$filter=array($filter_dat);
for ($n=0; $n<count($filter); $n++) { if (eregi($filter[$n], $textohneleer)) $filter_founded=1; }
(Pfad stimmt) funktioniert aber trotzdem nicht. Ich glaube es liegt an dem array($filter_dat);
. Ich könnte ja den ganzen Befehl $filter=array($filter_dat);
in die datei filter.txt schreiben, wenns aber anders ginge, wär's mir sehr recht
Danke im Vorraus
Mark
Lieber Mark,
$filter=array($filter_dat);
Was'n DAS^^^???
Das, was die Funktion file() zurückliefert _ist bereits_ ein Array! Nach jedem Zeilenumbruch wird gesplittet, so dass Deine Array-Einträge durch Zeilenumbrüche getrennt aufgenommen werden. Deshalb kannst Du Dir die zitierte Zeile komplett ersparen! Wenn Dein Pfad nicht absolut definiert ist (unter Windows wäre "c:\Programme\Mist\Dreck.exe" ein absoluter, "Unterverz/test.html" ein relativer Pfad), dann kann PHP Deine Datei nicht finden!
Liebe Grüße aus Ellwangen,
Felix Riesterer.
Hi!
Mal vorab ein kleiner Hinweis: http://dict.leo.org/?search=founded
(zu wahsaga:)Des is mir zu umständlich
(zu Anton:)Ich hab' die Wörter bereits in einem Array
Willst Du die Wörter jetzt in einem PHP-Array speichern, oder nur eine plain-text Liste?
Ich will es ungefähr so haben:
$filter_txt=??????;
$filter_founded=0;
$filter=array($filter_txt); //bzw. $filter=$filter_txt;
for ($n=0; $n<count($filter); $n++) { if (eregi($filter[$n], $text)) $filter_founded=1; }
blicke nicht durch was Du da genau vorhast ;-)
Ich würde es etwa so probieren:
<?php
function blacklist_match($msg) {
foreach (file('filter.txt') as $badword) {
if (strpos($msg, rtrim($badword)) !== FALSE) return TRUE;
}
return FALSE;
}
if (blacklist_match($_POST['message'])) {
// Wort auf blacklist in Nachricht gefunden
}
?>
'filter.txt' müsste entsprechend so aussehen:
wort1
wort2
wort3
...
Allerdings ist das nicht sonderlich effizient.
Grüße
Andreas