Aller au contenu

Conflit entre 2 expressions regulières


le_fleau

Sujets conseillés

Bonsoir à tous,

Voici un petit problème que je n'arrive pas à résoudre... J'ai une fonction qui doit transformer les URL en liens cliquables et une fonction de BBCode pour la balise image. Or, la balise [ IMG ] peut contenir ... une URL. et ma première fonction transforme alors l'url de l'image en lien clicable ; ce qui donne des : <img src="<a href=&quot;http://site.com/image.gif"> alt="" /> ... comment résoudre ce problème ? Voici les lignes de code, dans l'ordre

(PS : j'ai ajouté un espace après img dans la balise BB pour pouvoir poster sur ce forum)

function rogneurl1($url) 
{
$nb = strlen($url[0]);
$link = ($nb > 50) ? substr($url[0], 0, 50)."(...)" : $url[0];
$lien = '<a href="'.$url[0].'">'.$link.'</a>';
return $lien;
}
function rogneurl2($url)
{
$nb = strlen($url[4]);
$link = ($nb > 50) ? substr($url[4], 0, 50)."(...)" : $url[4];
$lien = $url[2].'<a href="http://www.'.$url[4].'">www.'.$link.'</a>';
return $lien;
}
function ck($img)
{
ini_set('allow_url_fopen', '1');
$image='';
if (@fclose(@fopen($img[1], 'r')))
{
$tab = getimagesize($img[1]); // on récupère la taille de l'image
$width = ($tab[0] > 370) ? ' width="370"' : '';
$image = '<img src="'.$img[1].'"'.$width.' alt="Image Utilisateur" />';
}
return $image;
}
function bbcode($chaine)
{
$chaine = preg_replace_callback('#\[img ](.+?)\[/img ]#si','ck',$chaine);
$chaine = preg_replace_callback("`(((ftp://)|(http(s?)://))(([[:alnum:]]|[-\%\.\?\=\#\_\:\&\/\~\+\@\,\;])*))`i",'rogneurl1',$chaine);
$chaine = preg_replace_callback("`(([^/])www\.|(^www\.))(([[:alnum:]]|[-\%\.\?\=\#\_\:\&\/\~\+\@\,\;])*)`i",'rogneurl2',$chaine);
}
?>

Lien vers le commentaire
Partager sur d’autres sites

Merci Dan, mais j'ai mis la fonction de bbcode img avant la transformation des urls ... ensuite, il y a d'autre fonctions bbcode qui celles ci doivent etre placées apres la transformation des url, mais je ne les ai pas retranscrites dans mon post.

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...