preg_match_all Frage
Twilo
- php
Hallo,
ich schlage mich gerade mit PCRE rum, und versteh etwas nicht so ganz
$string = 'test1 test2 test3 %test4% test5 test6 %test7%';
preg_match_all("/\bt(\w+)6\b/", $string, $ausgabe);
print_r($ausgabe);
als Ausgabe erhalte ich dann folgendes
Array
(
[0] => Array
(
[0] => test6
)
[1] => Array
(
[0] => est
)
)
soweit so gut
$string = 'test1 test2 test3 %test4% test5 test6 %test7%';
preg_match_all("/\b%(\w+)%\b/", $string, $ausgabe);
print_r($ausgabe);
Array
(
[0] => Array
(
)
[1] => Array
(
)
)
könnte mir jemand verraten, warum ich nicht "test4" und "test7" als Ausgabe bekomme?
wenn ich nach normalen Buchstaben suche, klappt alles, bei Sonderzeichen irgendwie nicht, wie kann ich trotzdem danach suchen?
aus CII. Reguläre Ausdrücke Funktionen (Perl-kompatibel) werd ich nicht ganz schlau
in mein Buch sind auch nur Beispiele mit Buchstaben
mfg
Twilo
Hi,
preg_match_all("/\b%(\w+)%\b/", $string, $ausgabe);
\b%
eine Wort-Grenze gefolgt von einem % - für \b muß, da % kein Wort-Zeichen ist, das Zeichen vor dem \b% ein Wort-Zeichen sein.
Vor %test4% steht aber ein Leerzeichen, kein Word-Character. ==> \b matcht nicht.
Analog für das %\b - auch das ist keine Wort-Grenze, da sowohl das % als auch das folgende Leerzeichen keine Wortzeichen sind.
cu,
Andreas
Hallo,
preg_match_all("/\b%(\w+)%\b/", $string, $ausgabe);
\b%
eine Wort-Grenze gefolgt von einem % - für \b muß, da % kein Wort-Zeichen ist, das Zeichen vor dem \b% ein Wort-Zeichen sein.
Vor %test4% steht aber ein Leerzeichen, kein Word-Character. ==> \b matcht nicht.
Analog für das %\b - auch das ist keine Wort-Grenze, da sowohl das % als auch das folgende Leerzeichen keine Wortzeichen sind.
irgendwie verwirrst du mich mit deinen 2 Sätzen ;-)
ps. ohne \b funktioniert es zwar, findet aber bissel zu viel
mfg
Twilo
gudn tach Twilo!
irgendwie verwirrst du mich mit deinen 2 Sätzen ;-)
vielleicht hilft der perl-text:
"perldoc perlre | grep -C \b"
zitat:
A word boundary ("\b") is a spot between two characters that has a "\w"
on one side of it and a "\W" on the other side of it (in either order),
counting the imaginary characters off the beginning and end of the
string as matching a "\W".
prost
seth