TaLun
|
User
|
|
registriert
|
14.01.2008
|
wohnt in
|
|
Beiträge
|
1
|
|
Also ich habe das selbe problem wie fish.
Wenn kein http:// vorgegeben wird, dann verlinkt er nicht sauber.
Ich habe meinen Code in eine Function gebaut und die linklenght als eigene unveränderte. Der code sieht bei mir so aus:
PHP:
//URL [url=pfad]Name[/url]
//Function linkLenght beachten!!!
$text = preg_replace_callback("/\[url=(.*)\](.*)\[\/url\]/Usi", 'linkLenght', $text);
// "reine" URLs umwandeln
$text = preg_replace_callback('#(( |^)(((ftp|http|https|)://)|www.)\S+)#mi', 'linkLenght', $text);
Wenn man also in irgendeiner Form (mit und ohne Linknamen) das http nicht schreibt wird der link wie bei fish aufgebaut.
Auch ist das bei der "reinen"url so. www.test.de wird gewandelt aber falsch und http://www.test.de wird bei mir komplett ignoriert.
Hast Du da ein Tip, was das Problem sein kann?
Edit:
ich lege nochmal den code für die function linklenght rein:
PHP:
// Prüft die Linklänge und passt sie gegebenenfalls an
// wird für preg_replace_callback definiert
function linkLenght($treffer)
{
// $treffer[1] ist die URL
$url = trim($treffer[1]);
// $treffer[2] ist der Ausgabename
// wurde kein Name angegeben, wird die URL als Name gewählt
if(strlen(trim($treffer[2]))!=0)
$linkname = $treffer[2];
else
$linkname = $treffer[1];
// legt eine maximale Länge von 50 Zeichen fest
// Ausnahme bei [img]-Tags
if(strlen($linkname)>50 AND !substr_count(strtolower($linkname), '[img]') AND !substr_count(strtolower($linkname), '[/img]'))
$linkname = substr($linkname, 0, 45-3)."...".substr($linkname, -5);
// Rückgabelink
$ergebnis = "<a href=\"".$url."\" target=\"_blank\">".$linkname."</a>";
return $ergebnis;
}
Dieser Beitrag wurde am 14.01.2008 um 16:33:39 Uhr von TaLun zum 1. Mal editiert.
|
Flitze
|
Administrator
|
|
registriert
|
17.10.2006
|
wohnt in
|
Eschwege
|
Beiträge
|
332
|
|
Hm da fehlen 2 Zeilen..
Hier mal mein Code:
PHP:
<?php
// Prüft die Linklänge und passt sie gegebenenfalls an
// wird für preg_replace_callback definiert
function linkLenght($treffer)
{
// $treffer[1] ist die URL
$url = trim($treffer[1]);
if(substr($url,0,7)!= 'http://' AND substr($url,0,6)!= 'ftp://')
$url = "http://".$url;
// $treffer[2] ist der Ausgabename
// wurde kein Name angegeben, wird die URL als Name gewählt
if(strlen(trim($treffer[2]))!=0)
$linkname = $treffer[2];
else
$linkname = $treffer[1];
// legt eine maximale Länge von 50 Zeichen fest
// Ausnahme bei [img]-Tags
if(strlen($linkname)>50 AND !substr_count(strtolower($linkname), '[img]') AND !substr_count(strtolower($linkname), '[/img]'))
$linkname = substr($linkname, 0, 45-3)."...".substr($linkname, -5);
// Rückgabelink
$ergebnis = "<a href=\"".$url."\" target=\"_blank\">".$linkname."</a>";
return $ergebnis;
}
?>
|