Précédent   Forum des professionnels en informatique > PHP > Langage
Langage Forum sur le langage PHP, la POO, les conventions, la sécurité, etc. Avant de poster : FAQ Langage, toutes les FAQ PHP, cours langage et sources PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/02/2011, 19h08   #1
Invité régulier
 
Yassine RooT
Inscription : janvier 2011
Messages : 40
Détails du profil
Informations personnelles :
Nom : Yassine RooT

Informations forums :
Inscription : janvier 2011
Messages : 40
Points : 7
Points : 7
Par défaut récupère tout les lien d'une pae

salut tout le monde j'ai ce code qui récupère le titre d'une page et il fonction bien ,
Code :
1
2
3
4
5
6
7
8
9
10
 
$ch = curl_init();
$timeout = 5; // set to zero for no timeout
curl_setopt ($ch, CURLOPT_URL, 'http://www.site.com');
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$file_contents = curl_exec($ch);
curl_close($ch);
	if (eregi("<title>(.*)</title>", $file_contents, $Sortie)) $Titre = $Sortie ;
echo $Titre[1] ;

mon prob c que je veux utiliser ce code pour obtenir tous les lien d'une page

exemple
Code :
eregi("<a href='(.*)'>", $file_contents, $Sortie)) $Titre = $Sortie ;
mais ca marche pas !!
new-root est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/02/2011, 19h22   #2
Modérateur
 
Avatar de ThomasR
 
Homme Thomas Rambaud
Développeur Web
Inscription : décembre 2007
Messages : 2 139
Détails du profil
Informations personnelles :
Nom : Homme Thomas Rambaud
Âge : 25
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : décembre 2007
Messages : 2 139
Points : 2 884
Points : 2 884
Bonsoir,

voici :
Code :
1
2
3
4
5
 
$url = 'http://le-site.fr';
$html = file_get_contents($url);
preg_match_all('/<a (.*?)href="(.*?)"(.*?)>(.*?)<\/a>/i', $html, $matches);
echo '<pre>' . print_r($matches, TRUE) . '</pre>';
__________________
Développeur Web, accessoirement geek (ou l'inverse)
http://thomasrambaud.com
ThomasR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/02/2011, 21h00   #3
Membre Expert
 
Inscription : septembre 2010
Messages : 1 239
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 1 239
Points : 1 561
Points : 1 561
Comme c'est assez simple tu pourrais aussi utiliser DomDocument ce qui devrait être un peu plus rapide :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
$page_cible = 'http://www.developpez.net/forums/d1039363/php/langage/recupere-lien-pae/';
 
$tab = array();
 
$dom = new DOMDocument;
 
if(@$dom->loadHTMLFile($page_cible))
	{
		$domliste = $dom->getElementsByTagName('a');
 
		foreach($domliste as $a) 
		{
			//$a->getAttribute('href') contenu du href
			$attribut_href = $a->hasAttributes() ? $a->getAttribute('href') : null;
			//$a->nodeValue contenu du libellé entre <a> et </a>
			$tab[$attribut_href] = $a->nodeValue;
		}
	}
	else
	{
		echo 'le document '.$page_cible. ' n\'a pas pu être chargé';
	}
 
echo '<pre>';
print_r($tab);
echo '</pre>';
?>
Par contre si tu utilises les expressions régulières prends soin d'utiliser preg_match, car ereg... est déprécié depuis php 5.3
__________________
- Réalisations
- Interface graphique : génération en javascript d'objets défilants, texte et/ou images, mode horizontal ou vertical.
ABCIWEB est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/02/2011, 09h10   #4
Modérateur
 
Avatar de ThomasR
 
Homme Thomas Rambaud
Développeur Web
Inscription : décembre 2007
Messages : 2 139
Détails du profil
Informations personnelles :
Nom : Homme Thomas Rambaud
Âge : 25
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : décembre 2007
Messages : 2 139
Points : 2 884
Points : 2 884
Tout à fait, mais il faudrait pour cela un code XHTML parfaitement valide.
__________________
Développeur Web, accessoirement geek (ou l'inverse)
http://thomasrambaud.com
ThomasR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/02/2011, 13h32   #5
Invité régulier
 
Yassine RooT
Inscription : janvier 2011
Messages : 40
Détails du profil
Informations personnelles :
Nom : Yassine RooT

Informations forums :
Inscription : janvier 2011
Messages : 40
Points : 7
Points : 7
Merci ca marche bien
new-root est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/02/2011, 13h39   #6
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 465
Points : 8 465
Citation:
Envoyé par ThomasR Voir le message
Tout à fait, mais il faudrait pour cela un code XHTML parfaitement valide.
non DOMDocument lit le le HTML, le DOM c'est différent du XML
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/02/2011, 16h42   #7
Modérateur
 
Avatar de ThomasR
 
Homme Thomas Rambaud
Développeur Web
Inscription : décembre 2007
Messages : 2 139
Détails du profil
Informations personnelles :
Nom : Homme Thomas Rambaud
Âge : 25
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : décembre 2007
Messages : 2 139
Points : 2 884
Points : 2 884
@stealth35, en effet. Par contre çà a pas l'air de gérer certaines choses qu'HTML5 autorise de nouveau (cf: http://alanstorm.com/parsing_html_with_php).
++
__________________
Développeur Web, accessoirement geek (ou l'inverse)
http://thomasrambaud.com
ThomasR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/02/2011, 16h50   #8
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 465
Points : 8 465
Citation:
Envoyé par ThomasR Voir le message
@stealth35, en effet. Par contre çà a pas l'air de gérer certaines choses qu'HTML5 autorise de nouveau (cf: http://alanstorm.com/parsing_html_with_php).
++
c'est plus le DOM 3 que le HTML5, la libxml2 ne gère pas toutes les nouveautés du DOM 3,
peu être quand y'aura la libxml3, et comme PHP en dépend...
En même temps c'est pas vraiment sortie officiellement, y'a plus qu'a attendre
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h01.


 
 
 
 
Partenaires

Hébergement Web