witch doctor Geschrieben 29. Oktober 2007 Geschrieben 29. Oktober 2007 Hallo, ich möchte zwei Strings vergleichen, wobei einer aus einer Datenbanktabelle kommt. Wenn beide übereinstimmen wird die Variable $nofilter auf false gesetzt. Leider bekomme ich die Fehlermeldung Warning: preg_match(): Unknown modifier '/' . Ich sehe leider den Fehler nicht. In einem Testskript hat das so funktioniert. $row = mysql_fetch_object($result_filter); $text1 = $row->filter; $text2 = $hp; $text1=addslashes($text1); $text2=addslashes($text2); if (preg_match("/\b".$text1."/i", $text2)) { echo "Es wurde eine Übereinstimmung gefunden."; $nofilter=false; } else { echo "Es wurde keine Übereinstimmung gefunden."; } [/php] Zitieren
hscade Geschrieben 29. Oktober 2007 Geschrieben 29. Oktober 2007 hast du dir mal $text1 ausgegeben lassen? würde vielleicht bei der Fehleranalyse helfen. Zitieren
etreu Geschrieben 30. Oktober 2007 Geschrieben 30. Oktober 2007 Benutze mal statt addslashes() preg_quote() für text1. Für text2 solltest du addslashes ganz weglassen. Zitieren
witch doctor Geschrieben 1. November 2007 Autor Geschrieben 1. November 2007 Ich habe mal $tex1 ausgeben lassen und preg_quote benutzt sowie bei $text2 addslashes() komplett weggelassen. Ich glaube, dass Programm knickt weg, sobald eine Internetseite drinsteht. Diese wird dann so (Beispiel) http\://www\.insulate\.org Als Klartext, also ohne die Slashes ist es in der Datenbank eingetragen. Oder hat das preg_quote das gemacht und ist das korrekt? Ich bekomme dann die Fehlermeldung von oben. Zitieren
etreu Geschrieben 2. November 2007 Geschrieben 2. November 2007 preg_quote() maskiert alle Zeichen, die in RegEx eine besondere Funktion haben. Daher auch '\.'. Du hast noch zusätzlich das Problem, dass du die '/' maskieren müsstest, da du diese als Begrenzer für deinen RegEx nimmst. Alternativ kannst du auch '§' oder ein anderes beliebiges Zeichen als Begrenzer nehmen, dass nicht innerhalb deines RegEx vorkommt. So wie der aktuelle Stand ist, nimmt die RegEx_Engine http: als das Muster an, das gesucht werden soll. Der Text der noch folgt, wird als Modifier interpretiert. Zitieren
witch doctor Geschrieben 2. November 2007 Autor Geschrieben 2. November 2007 Danke euch!!! Glaube es läuft jetzt! Zitieren
Monty82 Geschrieben 6. November 2007 Geschrieben 6. November 2007 preg_quote() maskiert alle Zeichen, die in RegEx eine besondere Funktion haben. Daher auch '\.'. Du hast noch zusätzlich das Problem, dass du die '/' maskieren müsstest, da du diese als Begrenzer für deinen RegEx nimmst. Alternativ kannst du auch '§' oder ein anderes beliebiges Zeichen als Begrenzer nehmen, dass nicht innerhalb deines RegEx vorkommt. Alternativ kann man der Funktion preg_quote() auch als zweiten Parameter den Begrenzer übergeben, der dann automatisch mit maskiert wird. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.