reg expresies
Ik ben op zoek naar de regexpression voor automatisch email en link om te zetten, deze heb ik dan ook gevonden maar ik werk ook nog met ubb codes en dus zoek ik de expressie dat wanneer er geen -tags staan het wordt omgezet
en als jullie misschien echt te veel tijd zouden hebben liefst ook nog dat een url met een img extensie (bijvoorbeeld .gif of .jpg) automatisch word omgezet naar [img]-tags...
Bedankt!
Gewijzigd op 02/07/2004 01:19:00 door De VeeWee
mitch! :p
Hier om je op weg te helpen:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?
$text = "Er was eens op www.phphulp.nl een admin genaamd Bas.";
$text2 = "Of was het nou http://www.phphulp.nl ???.";
function convert($text)
{
$retext = preg_replace("/((http:\/\/)*www\.[a-z0-9_\-\/.]+\.[a-z]{2,4})/is", "<a href=\"\\1\" target=\"blank\">\\1</a>", $text);
return $retext;
}
$text = convert($text);
$text2 = convert($text2);
echo $text;
echo $text2;
?>
$text = "Er was eens op www.phphulp.nl een admin genaamd Bas.";
$text2 = "Of was het nou http://www.phphulp.nl ???.";
function convert($text)
{
$retext = preg_replace("/((http:\/\/)*www\.[a-z0-9_\-\/.]+\.[a-z]{2,4})/is", "<a href=\"\\1\" target=\"blank\">\\1</a>", $text);
return $retext;
}
$text = convert($text);
$text2 = convert($text2);
echo $text;
echo $text2;
?>
http://sh4d3h.ath.cx/ubb.php staat deze code als file :P kun je kijke :)
ik heb een ubb parser en die zorgt ervoor dat of [url= ] laat omzetten naar <a href...> maar als ik dan dit script pak dan word die link in <a href> nog eens omgezet en dat is geen mooi zicht!
maar omdat ik niet zo goed ben in regular expressions weet ik niet hoe je ziet of het begint op [url= of [ url]
wat is hier ongeveer de juiste code voor?
Dank
Code (php)
1
2
3
2
3
<?
$text = preg_replace("/\[url=([:a-z0-9.\/_\-?=;&]*)\]([A-Za-z0-9.\/]*)\[\/url\]/i","<a href=\"\\1\">\\2</a>",$text);
?>
$text = preg_replace("/\[url=([:a-z0-9.\/_\-?=;&]*)\]([A-Za-z0-9.\/]*)\[\/url\]/i","<a href=\"\\1\">\\2</a>",$text);
?>
Die werkt alleen als je text[ /url ] gebruikt en niet zomaar met <a href ...>
Of is dit het ook niet?
het script zou er moeten voor zorgen dat ALLES werkt:
[url= ]
http://
www
maar als ik nu deze pak:
$retext = preg_replace("/((http:\/\/)*www\.[a-z0-9_\-\/.]+\.[a-z]{2,4})/is", "<a href=\"\\1\" target=\"blank\">\\1</a>", $text)
dan worden de urls die in de [url ] en in de [url= ] staan ook omgezet en dan word het een warboel.
dus het komt erop neer dat zoals in phpbb je gewoon de url kan ingeven, ofwel met [url ] ofwel met [url= ]
iemand? :s
Jah ik zat er net DreamWeaver al me te stressen maar het is me nog niet gelukt :'(
heb zelfs phpbb overhoop gehaald en het toch niet gevonden!
Morgen zal ik het nog eens proberen :)
$message =~ s/\[url\](.*)\[\/url\]/<a href=\"$1\">$1<\/a>/gi;
vertaald naar php:
Code (php)
1
2
3
2
3
<?
$message = preg_replace("/\[url\](.*)\[\/url\]/gi", "<a href=\"$1\">$1<\/a>", $message)
?>
$message = preg_replace("/\[url\](.*)\[\/url\]/gi", "<a href=\"$1\">$1<\/a>", $message)
?>
$message =~ s/\(.*)\[\/url\]/<a href=\"$1\">$2<\/a>/gi;
#Automatische URL detectie
$message =~ s/^(http:\/\/\S+)/<a href=\"$1\" target=_new>$1<\/a>/gim;
$message =~ s/(\s)(http:\/\/\S+)(\s)/$1<a href=\"$2\" target=_new>$2<\/a>$3/gim;
$message =~ s/(\s)(http:\/\/\S+)$/$1<a href=\"$2\" target=_new>$2<\/a>/gim;
In 5 delen:
[1] \[url\]\[/url\] sytax
[2] syntax
[3] een url aan het begin van een regel
[4] een url tussen spaties
[5] een url aan het eind
Dit heeft een redelijke tijd geduurd om dit door te krijgen. Het is ook verstandig eerst de \[url\] syntax, en later pas de rest nog te detecten.
Grtz,
Adje
Gewijzigd op 02/07/2004 09:59:00 door Arend a
zeer hard bedankt man!
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<?php
// test:
$message = "
[url]www.bla.com[/url] zonder = en wwww <br>
[url]http://www.bla.com[/url] zonder = en met http <br>
[url=bla.com]www met =[/url] <br>
[url=http://www.bla.com]http met =[/url] <br>
een link www.hotmail.com in het midden (zoals dit: http://www.homail.com )van de zin <br>
http://www.hotmail.com op het begin van de zin <br>
www.hotmail.com op het begin van de zin <br>
een link op het einde van de zin: www.zin.com <br>
een link op het einde van de zin: http://www.zin.com <br>
";
// [url]
$message = preg_replace("/\[url\](http:\/\/\S+)\[\/url\]/gi", "<a href=\"$1\">$1<\/a>", $message);
$message = preg_replace("/\[url\](www.\S+)\[\/url\]/gi", "<a href=\"http:\/\/$1\">$1<\/a>", $message);
// [url=]
$message = preg_replace("/\[url=(http:\/\/\S+)\](.*)\[\/url\]/gi", "<a href=\"$1\">$2<\/a>", $message);
$message = preg_replace("/\[url=(www.\S+)\](.*)\[\/url\]/gi", "<a href=\"http:\/\/$1\">$2<\/a>", $message);
//Automatische URL detectie :
//url begin regel
$message = preg_replace("/^(http:\/\/\S+)/", "<a href=\"$1\" target=_new>$1<\/a>", $message);
$message = preg_replace("/^(www.\S+)/", "<a href=\"http:\/\/$1\" target=_new>$1<\/a>", $message);
//url tussen spaties
$message = preg_replace("/(\s)(http:\/\/\S+)(\s)/", "$1<a href=\"$2\" target=_new>$2<\/a>$3", $message);
$message = preg_replace("/(\s)(www.\S+)(\s)/", "$1<a href=\"http:\/\/$2\" target=_new>$2<\/a>$3", $message);
//url aan het eind van een regel
$message = preg_replace("/(\s)(http:\/\/\S+)$/", "$1<a href=\"$2\" target=_new>$2<\/a>", $message);
$message = preg_replace("/(\s)(www.\S+)$/", "$1<a href=\"http:\/\/$2\" target=_new>$2<\/a>", $message);
// ff echoën
echo ($message);
?>
// test:
$message = "
[url]www.bla.com[/url] zonder = en wwww <br>
[url]http://www.bla.com[/url] zonder = en met http <br>
[url=bla.com]www met =[/url] <br>
[url=http://www.bla.com]http met =[/url] <br>
een link www.hotmail.com in het midden (zoals dit: http://www.homail.com )van de zin <br>
http://www.hotmail.com op het begin van de zin <br>
www.hotmail.com op het begin van de zin <br>
een link op het einde van de zin: www.zin.com <br>
een link op het einde van de zin: http://www.zin.com <br>
";
// [url]
$message = preg_replace("/\[url\](http:\/\/\S+)\[\/url\]/gi", "<a href=\"$1\">$1<\/a>", $message);
$message = preg_replace("/\[url\](www.\S+)\[\/url\]/gi", "<a href=\"http:\/\/$1\">$1<\/a>", $message);
// [url=]
$message = preg_replace("/\[url=(http:\/\/\S+)\](.*)\[\/url\]/gi", "<a href=\"$1\">$2<\/a>", $message);
$message = preg_replace("/\[url=(www.\S+)\](.*)\[\/url\]/gi", "<a href=\"http:\/\/$1\">$2<\/a>", $message);
//Automatische URL detectie :
//url begin regel
$message = preg_replace("/^(http:\/\/\S+)/", "<a href=\"$1\" target=_new>$1<\/a>", $message);
$message = preg_replace("/^(www.\S+)/", "<a href=\"http:\/\/$1\" target=_new>$1<\/a>", $message);
//url tussen spaties
$message = preg_replace("/(\s)(http:\/\/\S+)(\s)/", "$1<a href=\"$2\" target=_new>$2<\/a>$3", $message);
$message = preg_replace("/(\s)(www.\S+)(\s)/", "$1<a href=\"http:\/\/$2\" target=_new>$2<\/a>$3", $message);
//url aan het eind van een regel
$message = preg_replace("/(\s)(http:\/\/\S+)$/", "$1<a href=\"$2\" target=_new>$2<\/a>", $message);
$message = preg_replace("/(\s)(www.\S+)$/", "$1<a href=\"http:\/\/$2\" target=_new>$2<\/a>", $message);
// ff echoën
echo ($message);
?>
heb het op
http://members.lycos.nl/fauvee/vrijpodium/url.php
gezet maar er is geen output..
kan iemand misschien vinden waar het aan ligt, vind het niet :s
(forum locked ofzo)
waarde link begint moet of iets in die aard staan
heb de code vlug in een textarea gezet op deze pagina:
[url]http://members.lycos.nl/fauvee/vrijpodium/urlcode.htm[/url]