"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

[PHP] URLs parsen a la vBulletin

flaimo 21.01.2005 - 11:42 770 2
Posts

flaimo

ILFTKYS
Avatar
Registered: Dec 2001
Location: ask a ninja
Posts: 872
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 hin­bekommen, dass auch gleich­zeitig überlange urls mit „…“ abgekürzt werden. da ich leider keinen vbulletin source zur ver­fügung habe, viel­leicht könnte wer den code­abschnitt posten wie das am besten gelöst wird.

funka

Legend
ex-prophet(down below)
Registered: Sep 2000
Location: Vienna / SF
Posts: 6131
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_replace
und du kannst den replace code durch eine funktion leiten
(Using the 'e' modifier) http://at.php.net/preg_replace

dort kannst du um bei einem one-liner zu bleiben ternaere if operatoren verwenden (strlen({url}) > maxlength)?substr(.....):{url}

verstaendlich?

flaimo

ILFTKYS
Avatar
Registered: Dec 2001
Location: ask a ninja
Posts: 872
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“):

Code: PHP
$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
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz