Invité
Invité n'ayant pas de compte PHPfrance
26 avr. 2007, 09:57
A ça tu l'as pas dit,
Essaye donc cette forme :
Code : Tout sélectionner
'^<a [^>]*(class=["\']lienFleche1["\'][^>]*href=["\']([^"\']*)["\']|href=["\']([^"\']*)["\'][^>]*class=["\']lienFleche1["\'])[^>]*>([^<]*)</a>$'
Qui veut dire:
^<a : la chaîne traitée doir commencer par <a
class=["\']lienFleche1["\'][^>]*href=["\']([^"\']*)["\'] : cherche le critère "class=..." avant href
| : ou bien
href=["\']([^"\']*)["\'][^>]*class=["\']lienFleche1["\'] : cherche le critère "class=..." après href
>([^<]*)</a>$ : le titre du lien devant se terminer par </a>
Les formes :
[^>]* : cherche tou avant un > pour rester dans la balise ouverte
[^<]* : cherche tout avant un < pour rester hors de l'ouverture d'une balise
[
^"\']* : cherche tout avant " ou ' dans notre cas oblige de traiter le texte entre guillemets ou apostrophes
Voici un code php qui vérifie cette régle (qui peut être simplifiée aussi)
<pre>
<?php
$str = '<a class="lienFleche1" target="_blank" sytle="color:red" href=\'http://www.google.com\' align="left" class="lienFleche1" title="lien">titre_url</a>';
preg_match('#^<a [^>]*(class=["\']lienFleche1["\'][^>]*href=["\']([^"\']*)["\']|href=["\']([^"\']*)["\'][^>]*class=["\']lienFleche1["\'])[^>]*>([^<]*)</a>$#', $str, $m);
print_r($m);
?>
</pre>