webForumDet fria alternativet

Säker URl konvertering

6 svar · 234 visningar · startad av HDJHSKGDKJHSD

HDJHSKGDKJHSDMedlem sedan sep. 2001147 inlägg
#1

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
#2

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 ( "(^&#0124;[^\"])(http:\/\/&#0124;https:\/\/&#0124;ftp:\/\/&#0124;mailto:&#0124;file:\/\/&#0124;telnet:\/\/&#0124;gopher:\/\/)([\w\/#~:.,?+=&%@!\\-]*?)([\s.:?\\-]*[^\w\/#~:.,?+=&%@!\\-]&#0124;$)", "\\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=([^\]]*?)\]((.&#0124;\s)*?)\[\/url\]", "<a href=\"http://\\1\">\\2</a>", $str );

Säg till om de funkar eller ej! :)

HDJHSKGDKJHSDMedlem sedan sep. 2001147 inlägg
#3

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
#4

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:\/\/&#0124;https:\/\/&#0124;ftp:\/\/&#0124;mailto:&#0124;file:\/\/&#0124;telnet:\/\/&#0124;gopher:\/\/)&#0124;(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=([^\]]*?)\]((.&#0124;\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. --

HDJHSKGDKJHSDMedlem sedan sep. 2001147 inlägg
#5

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
#6

Hm, testa:

$str = preg_replace ( "/((http:\/\/&#0124;https:\/\/&#0124;ftp:\/\/&#0124;mailto:&#0124;file:\/\/&#0124;telnet:\/\/&#0124;gopher:\/\/)&#0124;(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. --

HDJHSKGDKJHSDMedlem sedan sep. 2001147 inlägg
#7

tack!

funkade perfekt !
:-D

131 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)