[Résolu] Remplacer URL trop longues par des liens cliquables

WRInaute accro
Coucou,

je suis en train de finaliser la refonte d'un de mes sites.


Sur cette page : http://www.oazik.com/4155-rack-de-trans ... ack-3u.htm , par exemple, sous IE6, l'interface est complètement explosée à cause de l'URL trop longue. Sous IE7 et Firefox, j'ai mis un overflow:hidden donc ça ne se voit pas trop.

Donc du coup, je voudrais mettre une url du genre : http://fr.audiofanzine.com/services/..._3he_alu.html cliquable comme ça se passe d'ailleurs sur le forum de WRI si je me souviens bien.

Pour le moment j'ai utilisé le script donné sur la doc de PHP :
<?php
$text = ereg_replace("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]",
"<a href=\"\\0\">\\0</a>", $text);
?>
-> http://fr.php.net/ereg_replace

Est-ce que quelqu'un aurait une petite idée ou un petit code à me filer ?
 
WRInaute accro
J'y avais bien pensé mais je ne peut pas utiliser substr dans une expression régulière.

Le but du jeu n'est pas forcément de couper l'URL au milieu mais simplement de reccourcir le lien.
 
WRInaute accro
TRès interressant, je ne connaissais pas cette fonction. Merci julienr, je vais regarder ça de plus près.
 
WRInaute accro
Et bien , un grand merci à toi julienr pour cette piste que je ne connaissais pas.

Si il y en a que ça interresse, voici mon code qui a l'air de fonctionner pas si mal


Code:
// Fonction de callback
// Permet de réduire la transformation des URL en liens cliquables
function callbackLinkFunc($matches){
	// comme d'habitude : $matches[0] représente la valeur totale
	// $matches[1] représente la première parenthèse capturante
	$suite='';
	if(strlen($matches[0])>80) $suite='...'; 
	return '<a href="'.$matches[0].'" target="_blank">'.substr($matches[0],0,80).$suite.'</a>';
}


$monTexte=preg_replace_callback("/(http:\/\/|ftp:\/\/)([^\s]*)/i", "callbackLinkFunc", $monTexte);

Voila, encore merci :wink:
 
Discussions similaires
Haut