[PHP] URLs parsen a la vBulletin
flaimo 21.01.2005 - 11:42 770 2
flaimo
ILFTKYS
|
hab jetz eine regexpression mit der ich urls parsen kann wie bei den meisten ubb bords also URL in eckigen klammern. habs allerdings noch nicht hinbekommen, dass auch gleichzeitig überlange urls mit „…“ abgekürzt werden. da ich leider keinen vbulletin source zur verfügung habe, vielleicht könnte wer den codeabschnitt posten wie das am besten gelöst wird.
|
funka
Legend ex-prophet(down below)
|
der code is ansich via (c) geschuetzt kann also nicht einfach so gepostet werden aber die loesung ist denkbar einfach du hast ja im regex_replace den fetch der url (backreferences) http://at.php.net/preg_replaceund du kannst den replace code durch eine funktion leiten (Using the 'e' modifier) http://at.php.net/preg_replacedort kannst du um bei einem one-liner zu bleiben ternaere if operatoren verwenden (strlen({url}) > maxlength)?substr(.....):{url} verstaendlich?
|
flaimo
ILFTKYS
|
also mein code schaut im moment so aus (vereinfacht aus der klasse rausgerissen; hab auch ein paar leerzeichen reingeschmissen damit das board nicht den text „zerparst“): $string = 'sl ala gehts [ URL]http://example.com/with_a_very_long_dir/and_another_long_dir[/URL ]';
echo preg_replace('#\[ url\](http|https|ftp)://(.+?)\[/ url\]#i', '<a href="\\1://\\2" target="_blank">\\1://\\2</a>', $string);
wenn ich /e ans ende setze gehts nicht. reg expressions sind leider nicht meine stärke. das ding is ein flickwerk aus verschiedenen quellen … kann ich das auch irgendwie mit eine der multibyte funktionen umsetzen? würde den code gerne auf utf8 strings anwenden. edit. vbulletin mag code posten anscheinend ned. siehe http://pastebin.com/231835
Bearbeitet von flaimo am 21.01.2005, 23:45
|