Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

PHP: Warning: preg_match(): Unknown modifier

Empfohlene Antworten

Veröffentlicht

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]

hast du dir mal $text1 ausgegeben lassen? würde vielleicht bei der Fehleranalyse helfen.

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.

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.

Danke euch!!! Glaube es läuft jetzt!

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.

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.