• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

preg_match funktiniert nicht

Der folgende Code
Code:
elseif ($_GET['Bereich'] == "projekt" && (preg_match("/\bveraenderungen\b/i", $_GET['Inhalt'])))
soll bei dem Link
index.php?Bereich=projekt&Inhalt=veraenderungen_ab_2012
folgendes über elseif ausgeben
Code:
         $ergebnis = mysql_query("SELECT Listenpunkt FROM projekt WHERE url ='" . mysql_real_escape_string($_GET['Inhalt']) . "' AND (Veroeffentlicht_am IS NOT NULL)");
         $row = mysql_fetch_object($ergebnis);
         $meta_description = "UpDate-Liste von "  .$row->Listenpunkt ;}

aber es wird eine alternative in der nur $_GET['Bereich'] als Kriterium angegeben ist ausgegeben.

Merkwürdig für mich
bei einer weiteren Auswertung

Code:
elseif ($_GET['Bereich'] == "projekt" && (preg_match("/\b-fotos\b/i", $_GET['Inhalt'])))
       {
        $meta_description = "Gesucht wird für das Projekt Bilduntermalung: zeigefreudige Models und Künstler für Fotos und Aktbilder (Malerei) ohne finanzielle Interessen für ein erotisches Projekt.";}

wird der Link
index.php?Bereich=projekt&Inhalt=stellung-fotos
richtig ausgegeben.

\b gibt in beiden Fällen die Wortgrenzen an.
Und auch sonst müsste meines Erachtens der Code quasie der selbe sein. Eben nur mit entsprechender Wortkette.

Wo ist mein Fehler?
 
Dein gedanklicher Fehler ist das \b am Ende. Lass das mal weg.

Tipp: um so etwas zu testen, kann man auch einen Live-RegExp-Editor nehmen. Hier habe ich dein Beispiel genommen und getestet:
PHP Live Regex
 
Code:
/\bveraenderungen/i

funktioniert bei dem String

Code:
veraenderungen_bis_2012

Der reguläre Ausdruck

Code:
/\bveraenderungen\b/i

funktioniert bei dem String

Code:
veraenderungen

aber nicht bei

Code:
veraenderungen_bis_2012

da nach dem Wort "veraenderungen" noch weiterer Text kommt und nicht das Ende des Wortes.
 
Zurück
Oben