Zum Inhalt springen

PHP: Warning: preg_match(): Unknown modifier


Empfohlene Beiträge

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]

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...