Tjo..
Hur gör man en bombsäker funktion för att parsa vanliga [a href=url]text[/a]
till [a href=url target=nysida]text[/a]
samt att göra http://urlgoeshere
till [a href=url target=nysida]urlgoesherewithouthttp[/a] ?
Jag skrev med [] bara för jag visste inte hur forumet skulle reagera på <> :)
tack på förhand !
SPiNMedlem sedan mars 20007 896 inlägg För att göra http-, ftp-, https-, m.fl. samt mailto: till klickbara länkar, hittade jag ett pattern gjort av emission under wF-script som jag modifierade för PHP. Hoppas det funkar, har inte testat själv.
$str = preg_replace ( "(^|[^\"])(http:\/\/|https:\/\/|ftp:\/\/|mailto:|file:\/\/|telnet:\/\/|gopher:\/\/)([\w\/#~:.,?+=&%@!\\-]*?)([\s.:?\\-]*[^\w\/#~:.,?+=&%@!\\-]|$)", "\\1<a href=\"\\2\\3\" target=\"blank\">\\2\\3</a>\\4", strtolower ( $str ) );
För att göra om [a=http://whatever/\]text[/a] till länkar, hittade jag i samma script ( som var 'wF-kod'-scriptet ) detta.
$str = preg_replace ( "\[a=([^\]]*?)\]((.|\s)*?)\[\/url\]", "<a href=\"http://\\1\">\\2</a>", $str );
Säg till om de funkar eller ej! :)
Warning: Unknown modifier '(' in /Library/WebServer/Documents/konv.php on line 32
Line 32 är då ditt pattern :-P
(det övre :) )
[Redigerat av HDJHSKGDKJHSD den 16 dec 2001]
SPiNMedlem sedan mars 20007 896 inlägg Hm, det finns ju inget ' med i mönstret. :q
Du har inte pillat in ett av misstag?
Annars kanske detta duger, borde funka likadant:
$str = preg_replace ( "/((http:\/\/|https:\/\/|ftp:\/\/|mailto:|file:\/\/|telnet:\/\/|gopher:\/\/)|(www\.))([\w\.]+)/i", "<a href=\"\\2\\3\\4\">\\2\\3\\4</a>", $str );
Den andra bör se ut så här istället:
$str = preg_replace ( "/\[a=([^\]]*?)\]((.|\s)*?)\[\/url\]/i", "<a href=\"http://\\1\">\\2</a>", $str );
------------------
SPiN, bjorne.w@telia.com
-- En ask vet jag stånda - den Yggdrasil heter, ett väldigt träd överöst av vita sanden. --
tackar!
$str = preg_replace ( "/((http:\/\/|https:\/\/|ftp:\/\/|mailto:|file:\/\/|telnet:\/\/|gopher:\/\/)|(www\.))([\w\.]+)/i", "<a href=\"\\2\\3\\4\">\\2\\3\\4</a>", $str );
funkade "nästan" perfekt.. om man skriver t.ex http://server.c/index.php
så blir bara http://server.c en länk..
d.v.s </a> kommer före /index.php istället för efter :)
SPiNMedlem sedan mars 20007 896 inlägg Hm, testa:
$str = preg_replace ( "/((http:\/\/|https:\/\/|ftp:\/\/|mailto:|file:\/\/|telnet:\/\/|gopher:\/\/)|(www\.))([\w\.\/\?]+)/i", "<a href=\"\\2\\3\\4\">\\2\\3\\4</a>", $str );
:)
------------------
SPiN, bjorne.w@telia.com
-- En ask vet jag stånda - den Yggdrasil heter, ett väldigt träd överöst av vita sanden. --