M
Mr. Snoot
Gast
Hü,
ich möchte gerne in meinem Suchscript prüfen, ob nur ganze Wörter entsprechend dem Suchbegriff angezeigt werden sollen oder nicht.
Dazu gibts ja in den regulären Ausdrücken \b. Wenn ich \b direkt in den regulären Ausdruck schreibe, funktioniert es korrekt. Ich will das \b aber logischerweise nur dann, wenn der Besucher die Option auch ausgewählt hat. Ob das der Fall ist, les ich einfach aus der Such-URL aus und speichere es in einer Varaiblen $pref, die ich dann im regulären Ausdruck statt \b einfüge.
Aber mit der Variablen funktioniert das ganze nicht mehr, hier mal der Code:
Wenn ich mir $pref mit echo ausgeben lasse, ist auf jeden Fall das \b korrekt übergeben worden, nur im regulären Ausdruck fehlt es (wenn ich diesen mit echo ausgeben lasse).
Komisch ist allerdings, dass dieses $capit was noch im Code vorkommt für die Unterscheidung von Groß- und Kleischreibung ist, also auch wahlweise gesetzt wird: i. Das wird mir im echo "/$pref((<[^>]*)|$search_str)$pref/e$capit" auch nicht angezeigt - aber funktionieren tut das kurioserweise trotzdem!?
Eigentlich hab ich das mit den Variablen $pref und $cap aus einem anderen Beispiel (nicht von mir) übernommen, wo das funktioniert wie gewünscht. Muss ich mit den Variablen irgendwas beachten?
ich möchte gerne in meinem Suchscript prüfen, ob nur ganze Wörter entsprechend dem Suchbegriff angezeigt werden sollen oder nicht.
Dazu gibts ja in den regulären Ausdrücken \b. Wenn ich \b direkt in den regulären Ausdruck schreibe, funktioniert es korrekt. Ich will das \b aber logischerweise nur dann, wenn der Besucher die Option auch ausgewählt hat. Ob das der Fall ist, les ich einfach aus der Such-URL aus und speichere es in einer Varaiblen $pref, die ich dann im regulären Ausdruck statt \b einfüge.
Aber mit der Variablen funktioniert das ganze nicht mehr, hier mal der Code:
PHP:
if(isset($_GET['exp_full']) && $_GET['exp_full'] == "yes")
{
$pref = "\b";
}
$einlesen = preg_replace("/$pref((<[^>]*)|$search_str)$pref/e$capit", '"\2"=="\1"? "\1":"<a class=\"anker\" name=\"hit\">\1</a>"', $einlesen);
Komisch ist allerdings, dass dieses $capit was noch im Code vorkommt für die Unterscheidung von Groß- und Kleischreibung ist, also auch wahlweise gesetzt wird: i. Das wird mir im echo "/$pref((<[^>]*)|$search_str)$pref/e$capit" auch nicht angezeigt - aber funktionieren tut das kurioserweise trotzdem!?
Eigentlich hab ich das mit den Variablen $pref und $cap aus einem anderen Beispiel (nicht von mir) übernommen, wo das funktioniert wie gewünscht. Muss ich mit den Variablen irgendwas beachten?