URL in Link umwandeln

Hallo,

so halb geht es schon mit
Code:
   $s_patter[]='"(( |^)((ftp|http|https){1}://)[-a-zA-Z0-9@:%_\+.~#?&//=]+)"i'; 
    $r_patter[]='<a href="\1" target="_blank">\\1</a>'; 
    $s_patter[]='"( |^)(www.[-a-zA-Z0-9@:%_\+.~#?&//=]+)"i'; 
    $r_patter[]='\\1<a href="[ URL]http://\2[ /URL]" target="_blank">\\2</a>'; 
    $s_patter[]='"([_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3})"i'; 
    $r_patter[]='<a href="mailto:\1">\\1</a>'; 
    $string=preg_replace($s_patter,$r_patter,$string);
aber im Link sind [ und ] enthalten. Diese werden abgeschnitten. Wie kann ich das umgehen udn wie kann ich den ausgegebenen Link kürzen oder durch einen eigenen TExt austauschen?

// EDIT

habs damit glaube ich hinbekommen aber jetzt habe ich das Problem das der Link zu lang ist
Code:
 function replace_url($string) 
  { 
  $string = preg_replace('@http://(\S+)@','<a href="http://\\1" target="_blank">\\1</a>',$string);
  return $string; 
  }
Wie kann ich den kürzen? Welche bedeutung hat eigentlich //l ? Denr Syntax sagt mir nichts

Wenn ich um das //1 einen substr machen geht das leide rnicht
 
Du könntest es so machen:
PHP:
function replace_url($string)
{
$string = preg_replace('@http://((\S{1,xxx})\S+)@','<a href="http://\\1" target="_blank">\\2</a>',$string);
return $string;
}

...statt xxx notierst du die gewünschte Zeichenanzahl.
 
Kein Ahnung was du da machst, bei mir funktioniert dies:
Code:
<?php

function replace_url($string)
{
$string = preg_replace('@http://((\S{1,13})\S+)@','<a href="http://\\1" target="_blank">\\2</a>',$string);
return $string;
}  

echo replace_url('http://www.domain.de/dieseurlistmirzulang');
//Ausgabe: <a href="http://www.domain.de/dieseurlistmirzulang" target="_blank">www.domain.de</a>
?>

...welchen Sinn die Änderungen haben?: das was du willst, den Text im Link verkürzen :eek:
 
Zurück