preg_match d'un lien href

Nouveau WRInaute
Bonsoir,

je cherche à vérifier un lien et extraire l'ancre
sur une page où il y a plusieurs liens avec un contenu variable

Code:
<a href="http://www.site1.com" title="site1" target="_blank">ancre 1 </a>
<a href="http://www.site2.com"  target="_blank">ancre 2 </a>
<a href="http://www.site3.com" title="site3">ancre 3 </a>
<a href="http://www.site4.com" rel="nofollow" >ancre 4 </a>

j'utilise le code suivant
Code:
 if (preg_match("#<a(.*)href=[\"']".$match_pattern."(\/?)[\"'](.*)>(.*)<\/a>#", $page, $match)) 
	{
	
	if($match[4] != "")
	  $ancre = $match[4];
    print_r($match);
    if (!preg_match("/rel=[\"']?nofollow[\"']?/", $match[0]))
      {
	  $follow_link = "1";
	  }
	}

quand il n'y a qu'un lien cela fonctionne mais avec plusieurs le print_r et ancre ne me retourne pas les bonnes informatiosn

merci de vos conseils
 
WRInaute accro
Et si le contenu est comme tu l'indiques, un lien par ligne, il y a plus simple:
Code:
<?php 
$content = <<<EOT
<a href="http://www.site1.com" title="site1" target="_blank">ancre 1 </a>
<a href="http://www.site2.com"  target="_blank">ancre 2 </a>
<a href="http://www.site3.com" title="site3">ancre 3 </a>
<a href="http://www.site4.com" rel="nofollow" >ancre 4 </a>
EOT;

$lines = explode("\n", $content);
$anchors = array();
foreach($lines as $l){
$anchors[] = trim(strip_tags($l));
}
print_r($anchors);
?>
 
Nouveau WRInaute
Bonsoir j'ai utilisé le preg_match_all aussi mais dans une page quelconque, j'ai le problème quand il y a plusieurs <a href=""> qui sont collés donc sur la même ligne.


mon script fonctionne pour récupérer tous les liens de la page quand ils sont sur une ligne par contre

j'obtiens dans le print_r du tableau plusieurs lien sur le meme enreg
 
WRInaute discret
Bonjour,

Fait gaffe à tes (.*), comme cela veut dire "n'importe quel caractère répété 0 ou plusieurs fois", cela peut tout a faire être un autre href, un <a>, etc. En gros, il peut te prendre le début de premier lien et la fin du 2e et en trouver un seul, la condition sera vraie. Utilise plutot ([^>]*) par exemple, pour dire que dans ta balise, tu n'acceptes pas de fermeture de balise.
 
Nouveau WRInaute
Bonjour et merci, je me doutais qu il y avait un truc comme cela pour l expression. A chaque fois je me fais avoir . Le point est résolu. Il faut maintenant que je traite toutes les combinaisons et la casse.

Merci
 
Discussions similaires
Haut