par
mmc26 » 21 déc. 2012, 21:42
Bonjour,
J'utilise la fonction ci-après qui marche bien si le texte contient une seule url. Avec deux url la fonction traite les deux url comme une seule et donc ça ne marche pas.
Comment l'améliorer ?
Merci pour votre aide.
Code : Tout sélectionner
function url_cliquable($string)
{
// le texte ou l on va rendre les email et les urls cliquables
$in = array(
'`((?:https?|ftp)://\\S+)(\\s|\\z)`',
'`([[:alnum:]]([-_.]?[[:alnum:]])*@[[:alnum:]]([-_.]?[[:alnum:]])*\.([a-z]{2,4}))`',
'`((?<!//)(www\.)\S+)(\s|\z)`'
);
$out = array(
'<a href="$1" target="_blank">$1</a>$2',
'<a href="mailto:$1">$1</a>',
'<a href="http://$1" target="_blank">$1</a>',
);
return preg_replace($in, $out, $string);
}
Bonjour,
J'utilise la fonction ci-après qui marche bien si le texte contient une seule url. Avec deux url la fonction traite les deux url comme une seule et donc ça ne marche pas.
Comment l'améliorer ?
Merci pour votre aide.
[code]
function url_cliquable($string)
{
// le texte ou l on va rendre les email et les urls cliquables
$in = array(
'`((?:https?|ftp)://\\S+)(\\s|\\z)`',
'`([[:alnum:]]([-_.]?[[:alnum:]])*@[[:alnum:]]([-_.]?[[:alnum:]])*\.([a-z]{2,4}))`',
'`((?<!//)(www\.)\S+)(\s|\z)`'
);
$out = array(
'<a href="$1" target="_blank">$1</a>$2',
'<a href="mailto:$1">$1</a>',
'<a href="http://$1" target="_blank">$1</a>',
);
return preg_replace($in, $out, $string);
}
[/code]