phpbar.de logo

Mailinglisten-Archive

[php] BBCode Code finden

[php] BBCode Code finden

Yannik Hampe yannik at cipher-code.de
Mon Jun 4 06:26:43 CEST 2007



ANGEL Harald wrote:
> Hallo Yannik?
> 
>> Aber nimm doch (.*?) also mit dem Fragezeichen zur Umkehrung der
>> Gierigkeit. Sonst bekommen deine Skripte schnell luistige neue Features,
>> wenn mehr als ein [code]-Tag im Text ist :-).
> 
> Oh Gott bist du Hellseher? *fg*
> Ich wollt grad retour schreiben dass das mit mehr als einem "CODE" ned funzt ;)
> 
> Ich versteh nur nicht ganz warum das ? hier hilft.
> "?" steht ja für optional.. geht mir nicht ganz ein warum er dann beide "Code-Blöcke" findet, wenn ich (.*?) anstelle von (.*) verwende...

Neine, in dem Fall steht es nicht für Optional. Wenn das Fragezeichen
hinter einem Quantifizierer steht, kehrt es die Gierigkeit um.
Per Standard nimmt sich * nämlich soviel er kann
$string ='baabaab';
/b.*b/
.* das Stern nimmt sich soviele Buchstabe wie es geht. Also komtm als
Ergbnis:
baabaab
raus. Der komplette String.
/b.*?b/
führt zu:
baab
Passt ja auch auf das Regex. Nur, dass sich das * nun nur so wenig nimmt
wie möglich :-).

Ein Fragezeichen kann übrigens auch ein konfitionales Regex einführen:
(?...|...|...)
Oder die 4 möglichen Assertions einleiten:
...(?=...)
...(?!...)
(?<=...)...
(?<!...)...

Oder zum einleiten eines nicht-registreirten Subpatterns:
(?...)

Oder zum einleiten eine Modifikators
(?Modifikator). (Also (?i) stellt beispielsweise das beachten von Gross
und Kleinschreibung ein. (?-i) stellt es aus :-).
> 
> harald
> 

Yannik

php::bar PHP Wiki   -   Listenarchive