Je mets en place un code de suivi des téléchargements de pdf, de jpg sur mon site avec un événement onclick. Pour cela je repère les href xxxx pdf, gif, jpg avec des expressions régulières et je rajoute le javascript qu'il faut
$string = 'xx <a href="bb.gif">txt</a>';
$pattern = "/href=\"(.+)(.pdf|.gif|.jpg|.png)\"/iU";
$repl = "href=\"$1$2\" onclick=\"js('$1$2');\"";
$string = preg_replace($pattern, $repl, $string);
echo htmlentities($string)."<br />";
C'est OK et cela me donne ce que je désire
xx <a href="bb.gif" onclick="js('bb.gif');">txt</a>
Problème !!! dans mon code, j'ai aussi ça
<a href="xxx.html"><img src="img.jpg"></a>
et donc, mon expression régulière ne fonctionne plus puisqu'elle traite un href et un jpg qui se suivent mais qui ne sont pas dans le même tag.
<a href="xxx.html"><img src="imgjpg" onclick="js('xxx.html"><img src="imgjpg');"></a>
Je n'arrive pas à m'en sortir. Ce que je voudrais c'est que vous m'aidiez à contruisre une expression régulière qui repère tout ce qu'il y a entre href d'un côté et jpg, pdf, gif de l'autre mais sans < ou > entre les deux.Voyez cet exemple
$string = 'xx <a href="bb-1.gif">txt</a> ';
$string .= '<a href="xxx.html"><img src="img.jpg"></a>';
echo htmlentities($string)."<br /><br /><br />";
$pattern = "/href=\"(.+)(.pdf|.gif|.jpg|.png)\"/iU";
$repl = "href=\"$1$2\" onclick=\"js('$1$2');\"";
$string = preg_replace($pattern, $repl, $string);
echo htmlentities($string)."<br />";
C'est cela qu'il faut adapter pour que href et .jpg, .gif ou .pdf soient dans le même tagMerci