Suchmuster, stört das + Zeichen?
hawkmaster
- php
0 Dennis0 hawkmaster0 Tennchen
0 Tennchen
Hallo zusammen,
ich hatte eben etwas Merkwürdiges festgestellt.
Ich suche in einem Text.
*EFBrightness +0.24/85% Lightest: "
*EFBrightness +0.16/90% Lighter: "
*EFBrightness 00.00/100% Normal: "
*EFBrightness -0.08/105% Dark: "
Ich Suchergebnis soll der Wert nach dem Slash / stehen, also;
85% Lightest
90% Lighter
100% Normal
105% Dark
ich mache es so und hatte bisher bei allen Tests nie Probleme.
in der Variablen $open steht "EFBrightness" und in $item steht das wort vor dem Slash / also etwa;
+0.24
00.00
-0.08
$trans = preg_match("#\*".$open." ".$item."/(.*?):#",$string1,$transitem);
jetzt wird aber nur alles gefunden wo kein + Zeichen vorkommt.
also nur;
100% Normal
105% Dark
Ich vermute das event. das + zeichen der Grund ist?
Wie könnte man das Suchmuster berbessern?
vielen Dank und viele Grüße
hawk
Hi hawkmaster,
Ich vermute das event. das + zeichen der Grund ist?
Wie könnte man das Suchmuster berbessern?
Das + hat in regulären eine besondere Bedeutung, welche in den Regular Expression Details des PHP-Manuals gelistet ist.
Du musst das + escapen, damit es seine Sonderbedeutung verliert. In deinem Fall, da die Suchmuster aus Variablen kommen, würde ich dir zu der Funktion preg_quote() raten, welche dies erledigt.
Viele Grüße,
~ Dennis.
Hallo Dennis,
recht herzlichen Dank für diesen Tipp.
<< Fall, da die Suchmuster aus Variablen kommen, würde ich dir zu der Funktion preg_quote() raten, welche dies erledigt.
Gerade habe ich im Php Manual diese Funktion gefunden :-))
Das muss ich mir merken.
vielen Dank und viele Grüße
hawk
Hi hawkmaster,
Ich vermute das event. das + zeichen der Grund ist?
Wie könnte man das Suchmuster berbessern?Das + hat in regulären eine besondere Bedeutung, welche in den Regular Expression Details des PHP-Manuals gelistet ist.
Du musst das + escapen, damit es seine Sonderbedeutung verliert. In deinem Fall, da die Suchmuster aus Variablen kommen, würde ich dir zu der Funktion preg_quote() raten, welche dies erledigt.
Wow, das ist ja viel besser als meine Lösung. Jetzt kenn' ich die Funktion auch =)
ich mache es so und hatte bisher bei allen Tests nie Probleme.
in der Variablen $open steht "EFBrightness" und in $item steht das wort vor dem Slash / also etwa;
+0.24
00.00
-0.08
$trans = preg_match("#\*".$open." ".$item."/(.*?):#",$string1,$transitem);jetzt wird aber nur alles gefunden wo kein + Zeichen vorkommt.
also nur;
100% Normal
105% DarkIch vermute das event. das + zeichen der Grund ist?
Wie könnte man das Suchmuster berbessern?
Ja, "+" bedeutet das gleiche wie "*" nur, dass es mindestens einmal vorkommen muss. Du musst das "+" also escapen.
if ($item[0] == '+')
{
$item = ''.$item;
}