petergMedlem sedan aug. 200023 inlägg Hej=)
Jag undrar om någon kan hjälpa mig med ett litet regexp problem.
Jag använder denna kod
$str = eregi_replace("(\[URL=)((http://|https://|ftp://|mailto:)(([[:alnum:]]|[[:punct:]])*))\](([[:alnum:]]|[[:punct:]])*)\[/URL\]","<a href=\"\\2\">\\6</a>",$str);
för att omvandla
[url=http://www.adress.se]Länk[/url]
till en vanlig länk, och det funkar kanonbra, men....
när man skriver in ett mellanslag i den text som ska länkas så funkar det inget bra, tex "Klicka här"
Hur ska jag förändra det reguljära uttrycket för att den ska tillåta mellanslag?
Jag har provat \s men inget positivt resultat:(
MarcusMedlem sedan juli 2000449 inlägg Detta fungerar för mig:
function makeUrl($str) {
// [a]xxxx://www.url.com[/a]
$pattern[0] = "#\[a\]([a-z]+?://){1}(.*?)\[/a\]#si";
$replacement[0] = '<a href="\1\2" target="_blank">\1\2</a>';
// [a]www.url.com[/a]
$pattern[1] = "#\[a\](.*?)\[/a\]#si";
$replacement[1] = '<a href="http://\1" target="_blank">\1</A>';
// [url=xxxx://www.url.com]Websajt[/url]
$pattern[2] = "#\[a=([a-z]+?://){1}(.*?)\](.*?)\[/a\]#si";
$replacement[2] = '<a href="\1\2" target="_blank">\3</A>';
// [url=www.url.com]Websajt[/url]
$pattern[3] = "#\[a=(.*?)\](.*?)\[/a\]#si";
$replacement[3] = '<a href="http://\1" target="_blank">\2</a>';
$str = preg_replace($pattern, $replacement, $str);
return $str;
}
$str = makeUrl($str);
petergMedlem sedan aug. 200023 inlägg Fixade det!
Jag la till [[:space:]] och då funkade det =)
..och ett $-tecken så att man kan skapa flera länkar.
Utan dollar-tecknet kunde man bara skapa en länk. 2st länkar gjorde att nästan hela text-stycket blev länkat