Page 1 sur 1

Extraire le contenue de toutes les balises href d'une page web et les mettre dans une array

Posté : 25 oct. 2021, 10:48
par bagou450
Bonjour,

Je voudrais savoir comment je peut extraire le contenue de toutes les balises href d'une page web et les mettre dans une array

Code : Tout sélectionner

$html = file_get_contents('Ma page web'); $dom = new DOMDocument; @$dom->loadHTML($html); $links = $dom->getElementsByTagName('href'); foreach ($links as $link){ }
Pour l'instant j'ai ceci mais je ne sais pas comment les mettre dans une array sachant que a la fin je voudrais un json resemblant a ceci

Code : Tout sélectionner

{ [ "hrefresult": "firsthrefresulthere", "another things": "here" ], [ "hrefresult": "secondhrefresulthere", "another things": "here" ] }

Re: Extraire le contenue de toutes les balises href d'une page web et les mettre dans une array

Posté : 25 oct. 2021, 10:58
par @rthur
Fais un var_dump($link) pour voir ce que tu récupères dans ton foreach()

Et ensuite tu construis un tableau avec les infos que tu veux en remplaçant firsthrefresulthere par ce que tu as extrait et que tu trouves dans $link :
$tablo_liens[] = array(
     "hrefresult"=>"firsthrefresulthere", 
     "another things"=>"here"
);

Re: Extraire le contenue de toutes les balises href d'une page web et les mettre dans une array

Posté : 25 oct. 2021, 12:49
par bagou450
Oui mais le probleme c est que cela va reattribuer la variable a chaque fois et non ajouter des ligne a une array

Re: Extraire le contenue de toutes les balises href d'une page web et les mettre dans une array

Posté : 25 oct. 2021, 13:53
par or 1
non, pas avec le code donné en exemple.

Re: Extraire le contenue de toutes les balises href d'une page web et les mettre dans une array

Posté : 25 oct. 2021, 14:40
par bagou450
J'ai reussi au final avec ceci

Code : Tout sélectionner

$url = 'Mon URL'; $pattern = '#(?:src|href|path|xmlns(?::xsl)?)\s*=\s*(?:"|\')\s*(.+)?\s*(?:"|\')#Ui'; $subject = file_get_contents($url); preg_match_all($pattern, $subject, $matches, PREG_PATTERN_ORDER); foreach($matches[1] as $match) { if (str_starts_with($match, './')) { $hrefresult= str_replace("./", "", $match); $hrefresult2= strtok($artifactslink, '-'); $tablo_liens[] = array( "hrefresult"=>$hrefresult, "another things"=>$hrefresult2 ); } } echo $tablo_liens;
Merci ;)