Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Parser PHP pour ne garder que les URL

7 réponses
Avatar
Thomas V.
Bonjour,

J'ai besoin de parser une page web afin de garder les URL contenues dans
cette page.
Je récupère le source de la page sous la forme d'une variable, mais je ne
sais pas trop comment la parser pour n'en garder que les URL http.

Si vous avez une idée pour me mettre sur la voie, ou plus...

Merci.

--
Thomas V.

7 réponses

Avatar
Paul Delannoy
Thomas V. a écrit:
Bonjour,

J'ai besoin de parser une page web afin de garder les URL contenues dans
cette page.
Je récupère le source de la page sous la forme d'une variable, mais je ne
sais pas trop comment la parser pour n'en garder que les URL http.


Faire un boucle qui cherche les <a href=" , récupère ce qui suit
jusqu'au "> suivant ?

Avatar
marc.quinton-PAS-DE-
Paul Delannoy wrote:


Faire un boucle qui cherche les <a href=" , récupère ce qui suit
jusqu'au "> suivant ?



oui, mais quid de ce type de code :

$proto = 'http'
$host = "www.myhost.org';
$location = 'index.php?module=main&id3';

url = sprintf('%s://%s/%s', $proto, $host, $location);
$name = 'test me';

$link = sprintf('<a href="%s">%s</a>', $url, $name);


pour ma part, je pense que cette demande est tres hypothétique !

Avatar
Frederic PANES
Thomas V. écrivit :
Bonjour,

J'ai besoin de parser une page web afin de garder les URL contenues
dans cette page.
Je récupère le source de la page sous la forme d'une variable, mais
je ne sais pas trop comment la parser pour n'en garder que les URL
http.


Bonjour,

faire une boucle avec une expression régulière. Utiliser eregi() par
exemple.

http://www.nexen.net/scripts/parfonction.php?fonction=eregi

Cordialement.

--
Frédéric

Avatar
marc.quinton-PAS-DE-
wrote:

désolé je suis hors sujet, j'avais lu "parser du php" ...
Avatar
P'tit Marcel


J'ai besoin de parser une page web afin de garder les URL contenues dans
cette page.
Je récupère le source de la page sous la forme d'une variable, mais je ne
sais pas trop comment la parser pour n'en garder que les URL http.

Si vous avez une idée pour me mettre sur la voie, ou plus...


tu peux faire ça avec une expression régulière. c'est un exemple
classique fréquemment appliqué dans des scripts disponibles ici ou la,
genre:

preg_match_all('`https?://[-a-z0-9./%_]+`si', $page, $table_url);

Avatar
Julien MARY
Thomas V. wrote:

Bonjour,

J'ai besoin de parser une page web afin de garder les URL contenues dans
cette page.
Je récupère le source de la page sous la forme d'une variable, mais je ne
sais pas trop comment la parser pour n'en garder que les URL http.

Si vous avez une idée pour me mettre sur la voie, ou plus...

Merci.

--
Thomas V.




tu dois transformer le source en tableau avec la fontion file.
Ensuite tu parcours ce tableau avec un foreach et là tu utilises
des expressions rationnelles pour récupérer les champs souhaités.
C'est à dire ce qui se trouve entre <a class="url"> ..... </a> (e.g)
Il va falloir de taper les expressions rationnelles.
Tu n'as pas le choix.

Avatar
pollux
Thomas V. wrote:

Bonjour,

J'ai besoin de parser une page web afin de garder les URL contenues dans
cette page.


appeler link_extractor($url)

(Vu sur www.nexen.net)


function link_extractor($url){
$fichier = file($url);
$chaine = implode("", $fichier);
return link_extractor_string($chaine);
}

function link_extractor_string($chaine){
$retour = array();
while($x = strstr($chaine, "<a ")){
$href = substr($x, 3, strpos($x, ">") -3);
$chaine = substr($x, strpos($x, ">") +1);

preg_match_all("/b([^s]+)s*=s*("|')(.*?)("|')s/",
"$href",$attribut);
$details = arrays2hash($attribut[1], $attribut[3]);
$details['tag'] = $href;
$details['texte'] =
substr($chaine,0,strpos(strtolower($chaine),"</a>"));
#print "n";
$chaine = substr($chaine, strpos(strtolower($chaine),"</a>") +4);

$image2 =
preg_replace("/b([^s]+)s*=s*("|')([s]*?)("|')s/","", "$href");
preg_match_all("/b([^s]+)s*=s*([^s]*?)s/", " $image2",$attribut);
// l'ordre du merge est important : on ecrase les valeurs trouvees
sans guillemets
// par celle trouvee avec.
$details = array_merge(arrays2hash($attribut[1],$attribut[2]),$details);
array_push($retour, $details);
}
return $retour;
}


function arrays2hash($array_keys , $array_values){
if (!is_array($array_keys) || !is_array($array_values)){
return array();
}
if (count($array_keys) != count($array_values)){
return array();
}
$retour = array();
while(count($array_keys) > 0){
$retour[array_pop($array_keys)] = array_pop($array_values);
}
return $retour;
}


--
Pollux was here
____________________________________________
http://www.pollen-online.com
La seule boutique en ligne
de vente de pollen frais Percie du Sert...