Problem mit URL Ersetzen
Andavos
- php
Hallo,
also ich bastel gerade an einem Script, bei dem [URL]www.123.de[/URL] Anklickbar gemacht werden soll.
Ich habe auch schon folgenden Code:
<?php
$text = "[URL]www.Hier.de[/URL] oder [URL]http://Hier.de[/URL]";
if (strpos($text, "[URL]www."))
{
$text = preg_replace("/[URL](.*?)[/URL]/si", "<a href=http://\1>\1</a>", $text);
}
elseif (strpos($text, "[URL]http://"))
{
$text = preg_replace("/[URL](.*?)[/URL]/si", "<a href=\1>\1</a>", $text);
}
else
{
$text = preg_replace("/[URL](.*?)[/URL]/si", "<a href=\1>\1</a>", $text);
}
echo $text
?>
Ruft man jetzt die Seite, sieht erst alles ganz normal an, aber:
klickt man jetzt auf http://Hier.de kommt man auf http://http://Hier.de
weiß jemand warum?
Und was muss ich an dem Script ändern, das er geht?
MFG
Andavos
Hey,
Und was muss ich an dem Script ändern, das er geht?
Schreibstil und besser durchdenken. Und man sagt: "das Script".
In deinem Script wird nur der erste regex ausgeführt, weil die anderen zwei
elseif()-Blöcke niemals erreicht werden. Lass die if()s weg, und schreib nur
die drei preg_replace() Anweisungen - und zwar in der richtigen Reihenfolge -
vom speziellen zum allgemeinen Fall:
s/ [URL]http:.+?[URL] / <a href="$1">$1</a> /x;
s/ [URL]www.+?[URL] / <a href="http://$1">$1</a> /x;
s/ [URL].+?[URL] / <a href="$1">$1</a> /x;
MsF,
milky
Moin!
if (strpos($text, "[URL]www."))
{
$text = preg_replace("/[URL](.*?)[/URL]/si", "<a href=http://\1>\1</a>", $text);
}
--------------------------------------------------------------^^^^
Da schreibst Du selbst das zweite http:// hin.
Vielleicht solltest Du die auch auf [URL]http://....[/URL] untersuchen.
Oder Du nimmst gleich den Automat:
function linkfind($text) {
$my_a_href= "<a target="_new" style="text-decoration:underline" title="gefundener Link" href="dereferer.php?";
$my_pattern = '#(^|[^"=]{1})(HTTP://|http://|FTP://|ftp://|mailto:|news:|irc:|NEWS:|IRC:|gopher://|GOPHER://)([^\s<>]+)([\s\n<>]|$)#sm';
$text=preg_replace($my_pattern,"\1<a href="\2\3">\2\3</a>\4",$text);
$text=str_replace("<a href="","$my_a_href", $text);
return $text; }
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®