seth: [Reg-Exp] Links mit preg_replace umformen

Beitrag lesen

gudn tach!

Mein bishereriger Versucht sieht wie folgt aus, funktioniert jedoch leider nicht:

$message = preg_replace('/([^:]+):img:\(.*)\/sU','<img src="\1" alt="\2">',$message);

das setzt voraus, dass vor dem dateinamen entweder nix mehr steht oder ein doppelpunkt, falls anderer text davor steht.

Mit preg_replace wirst du hier nicht weiterkommen.

warum?

Auch dein Regex lässt sich verbessern:
/([a-z0-9-]+.(gif|jpg|png))?:img:\(.*)\/sU
                            ^ wozu das? ist der dateiname etwa optional?

ich wuerde noch eine kleinigkeit aendern:

die klammer mit den dateiendungen zu "(?:gif|jpg|png)" aendern, denn die explizite dateiendung wird nicht mehr verwendet beim ersetzen.

zusammengefasst wuerde ich einfach
preg_replace('/([a-z0-9-]+\.(?:gif|jpg|png)):img:\*(.*?)\*/s', '<img src="$1" alt="$2" />', $message);
verwenden. als trennzeichen zum etwaigen umgebenden normalen text darf man dann selbstverstaendlich keine kleinen buchstaben, ziffern, oder das minus-zeichen verwenden, sondern es wuerde sich z.b. das leerzeichen anbieten.

prost
seth