webForumDet fria alternativet

Tillåta siffror i domännamnet i min URLEncoder

Webbutveckling

2 svar · 365 visningar · startad av lillebror

Medlem sedan apr. 20041 597 inlägg
Frågan#1

Hej,

Jag har nu suttit och felsökt min UrlEncoder och förstod inte varför funktionen inte klarade av att göra om min webbadress till en länk i webbläsaren. Nu precis slog det mig att stödet inte finns i mitt reguljära uttryck!

Så här ser min funktion ut nu:

function urlEncoder($text, $target="_blank") {

    $text = preg_replace("/(?<=^|\s)((http?|https?|ftps?):\/\/)?(([-_a-zA-Z]+\.)+)([a-zA-Z]{2,6})(\/[^\]\[\s]*)?(?=\s|$)/ie","'$1'!=''? '<a href=\"$1$3$5$6\" target=\"$target\">$1$3$5$6</a>':'<a href=\"http://$3$5$6\">$3$5$6</a>'",$text);
    $text = preg_replace("/\[URL=((https?|ftps?):\/\/)?(([-_a-zA-Z]+\.)*)([a-zA-Z]{2,6})(\/[^\]\[\s]*)?\]([^\]\[]+)\[\/URL\]?/ie","'$1'!=''?'<a href=\"$1$3$5$6\" target=\"$target\">'.stripslashes('$7').'</a>':'<a href=\"http://$3$5$6\">'.stripslashes('$7').'</a>' ",$text);
 
    $text = preg_replace("/\[URL]((https?|ftps?):\/\/)?(([-_a-zA-Z]+\.)*)([a-zA-Z]{2,6})(\/[^\]\[\s]*)?\[\/URL\]/ie","'$1'!='' ?'<a href=\"$1$3$5$6\" target=\"$target\">$1$3$5$6</a>':'<a href=\"http://$3$5$6\">$3$5$6</a>'",$text);

    return $text;
}

Vad behöver jag lägga till i regexp-uttrycket för att siffror ska tillåtas i domännamnet?

Medlem sedan apr. 20041 597 inlägg
#2

Löste problemet med att lägga till 0-9...det var ju inte så svårt :)

Medlem sedan maj 200010 687 inlägg
#3

Två tips.
Istället för 0-9 så kan du skriva \d.
Och istället för [-_a-zA-Z] så kan du skriva [-\w].

265 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
135 ms — deklarationer (db)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)
137 ms — ändringar (db)