p@radox | soju a écrit :
Utilise preg_replace avec l'option e (voir doc), voici un exemple avec ta regexp :
Code :
- $body = preg_replace("#(http|mailto|news|ftp|https)://(([-éa-z0-9\/\.\?_=\#@:~&% '])*)#ei", "build_url('\\0')", $body);
|
et tu crée une fonction build_url qui pourra "couper" le nom du lien selon la longueur.
PS :
- ta regexp n'est pas très propre,
- j'ai du mal à comprendre pourquoi tu insère du bbcode dans ton lien.
|
merci beaucoup à tous les deux de vos conseils : cependant j'ai choisi les regexp !
en fait, soju, le BB code vient de hfr, je voulait mettre en relief ce bout de code (mais je suis gouré, et en fait ça marche dans les [/code] )
Donc ça marche nickel : voici donc,
Code :
- $body = preg_replace("#(http)://(([-éa-zA-Z0-9\/\.\?_=\#@:~&% '])*)#e", "build_url('\\0')", $body);
- function build_url($url){
- if ( strlen($url)>70){
- $new_url_end = substr($url, -20);
- $new_url_begin = substr($url, 0,60);
- $new_url = $new_url_begin." [...] ".$new_url_end;
- $url = "<a href=".$url." target='_blank'>".$new_url."</a>";
- }
- else{
- $url = "<a href=".$url." target='_blank'>".$url."</a>";
- }
- return $url;
- }
|
Message édité par p@radox le 29-01-2005 à 01:29:21
|