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="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)
CODE
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);
}
?>
{
$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);
}
?>