Hi Tom,
Was meinst du jetzt mit Grenzen? Meinst du die Leerzeichen? Um die auszuschließen, müsste man den RegEx so schreiben:
Im String sind doch beide Grenzen zweimal enthalten. Schau mal genau hin.
$string = 'Hier geht das ac los, mach doch mal ca. soviel Pica kommt';
^^ ^^ ^^ ^^
Es ist trotzdem so, wie ich sagte. Habe es einerseits gerade ausprobiert, andererseits aber auch noch mal im PHP Manual nachgelesen, dort steht:
<zitat>preg_match() gibt die Anzahl der Übereinstimmungen mit Suchmuster zurück. Das ist entweder 0 (keine Übereinstimmung) oder 1, weil preg_match() die Suche nach der ersten Übereinstimmung beendet.</zitat>
In Treffer steht also:
Array
(
[0] => ac los, mach doch mal ca
[1] => los, mach doch mal
)
Nicht mehr so sicher bin ich mir da, wenn man preg_match_all() verwendet, drum habe ich es auch hier mal kurz ausprobiert, Ausgabe:
Array
(
[0] => Array
(
[0] => ac los, mach doch mal ca
)
[1] => Array
(
[0] => los, mach doch mal
)
)
Es gibt also auch hier nur einen Suchtreffer (sonst müsste ja $treffer[1][1] noch vorhanden sein).
Habe auch hierzu kurz im PHP Manual nachgeschlagen:
<zitat>Nachdem die erste Übereinstimmung gefunden wurde, wird die nachfolgende Suche jeweils am Ende der letzten Übereinstimmung fortgesetzt.</zitat>
D.h., die Suche wird also dort fortgesetzt, wo der vorherige Match aufhört. Da der erste Match ja " los, mach doch mal " war (s.o.), ist im nachfolgenden Reststring kein "ac" mehr vorhanden, und es wird nichts mehr gefunden.
Zur Kontrolle mal noch dieser Test:
$suchstring = 'Hier geht das ac los, mach doch mal ca. soviel ac's wie da auch ca's sind ;-)';
Array
(
[0] => Array
(
[0] => ac los, mach doch mal ca
[1] => ac's wie da auch ca
)
[1] => Array
(
[0] => los, mach doch mal
[1] => 's wie da auch
)
)
Also, ich glaube, jetzt ist es klar ;-)
So bis ins Detail, hab ich mich damit aber bis jetzt auch noch nie beschäftigt.
MfG, Dennis.
Mein SelfCode: ie:{ fl:{ br:^ va:) ls:< fo:) rl:( n4:& ss:) de:> js:( ch:{ sh:( mo:} zu:|
Sinnvolles Zitieren: Man zitiert nur Teilsätze des Vorposters
auf die man sich bezieht! Nicht einfach alles.