Trouver un lien dans un fichier

Fermé
Arbitta Messages postés 76 Date d'inscription jeudi 5 mars 2015 Statut Membre Dernière intervention 16 février 2016 - 7 avril 2015 à 09:43
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 - 7 avril 2015 à 11:50
Bonjour,

j'ai un fichier text "fich.txt" qui contient un code source simple d'une page html
<html>
<body>
<p>
<a href="lien1"> </a>
<a href="lien2"> </a>
<a href="lien3"> </a>
<a href="lien4"> </a>
</p>
</body>
</html>

je veux insérer ses liens dans un autre fichier . J'ai essayé ce code mais il ne m'insère que le dernier lien.
<?php
$fp=fopen("fich.txt","r+");
$finlink="<a";
$position=array();
$i=0;
while (!feof($fp)) {
$cont=fgets($fp,1024);
$i++; 
if (strstr($cont,$findlink)) 
    {
		echo ("la position du lien est : ".$i."<br>");
       	if ( preg_match( '@href="([^"]+)"@' , $cont, $match ) )
			{
			$alt = array_pop($match);
			echo ("votre lien est <br> ".$href."<br>");
			$fln=fopen("lien.txt","w");
			fwrite ($fln,$cont);
			fwrite($fln,"\r\n");  
}}}
fclose($fp);
fclose($fln); 	 
?>

Je veux insérer dans mon nouveau fichier lien.txt seulement les noms du lien et non pas tout le code (<a href="..."></a>) :
lien1
lien2
lien3
lien4
Pouvez vous m'aidez s'il vous plait :)
merci
A voir également:

2 réponses

Whismeril Messages postés 19025 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 19 avril 2024 929
7 avril 2015 à 11:22
Bonjour, je ne fais pas de PHP, mais j'aurais tendance à utiliser une regex pour trouver les liens
https://www.commentcamarche.net/contents/803-php-expressions-regulieres
0
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
7 avril 2015 à 11:50
Salut,

Une solution plus simple avec la classe DOMDocument :
$liens = array();

$doc = new DOMDocument();

$doc->loadHTML('<html>
<body>
<p>
<a href="lien1"> </a>
<a href="lien2"> </a>
<a href="lien3"> </a>
<a href="lien4"> </a>
</p>
</body>
</html>');

$ancres = $doc->getElementsByTagName('a');

foreach ($ancres as $ancre) {
	$liens[] = $ancre->getAttribute('href');
}

var_dump($liens); // array(4) { [0]=> string(5) "lien1" [1]=> string(5) "lien2" [2]=> string(5) "lien3" [3]=> string(5) "lien4" } 


Utilise la méthode loadHTMLFile() à la place de loadHTML() pour charger le html depuis un fichier.

Bonne journée
0