Felix Riesterer: RegExp geht das besser?

Beitrag lesen

Lieber berdn (sic!),

$myString = preg_replace_callback( "|(<a.*>)([a-zA-Z0-9])(.*)(</a>)|", "firstLetterUnderline",$myString);

Das erscheint mir unzuverlässig! (<a.*>) ist von sich aus sehr gefräßig, so dass es auch einen String wie '<a href="#">Link</a>' matchen würde. Jedenfalls sehe ich keinen Schalter für non-greedy in Deinem Suchmuster. Die dritte Backreference ist auch problematisch: (.*) matched alles! ich könnte mir vorstellen, dass Dein Suchmuster nur den ersten Link verändern wird, da alle restlichen Links im dritten Klammerpaar hineinpassen.

Aber ob Dein Suchmuster seinen Zweck erfüllt, oder nicht, das hast Du uns ja nicht verraten... Jedenfalls lese ich bei Dir keine Beschwerden über nichtgewolltes Verhalten Deines Scriptes.

Liebe Grüße aus Ellwangen,

Felix Riesterer.