Précédent   Forum des professionnels en informatique > PHP > Langage > Regex
Regex Forum d'entraide sur les expressions rationnelles PHP. Avant de poster -> FAQ regex, Cours de regex et Sources de regex
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/06/2011, 13h00   #1
apt
Membre du Club
 
Inscription : mai 2002
Messages : 526
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 526
Points : 42
Points : 42
Par défaut Récupérer l'image son titre et la date

Bonjour à tous,

J'aimerais récupéré l'image de ce code avec son titre ainsi que la date.

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
29
30
31
32
33
34
35
36
<ul class="FloatLeft">
	<li class="PODItem">
		<a id="POD16" class="DisplayBlock">
		<img style="border-width: 0px; margin: 0pt auto; display: block;" alt="titre_image [gall  - 16 juin 2011]" src="http://media.galltv.com/POD/658.jpg">
		</a>
		<div style="width: 940px;" class="FloatLeft">
			<span class="ItemDate">16 juin 2011</span>
			<span class="FloatRight VMargin5">
			<a target="_blank" href="http://twitter.com/share?url=http%3a%2f%2fgalltv.com%2fae%2fgall%2f2011%2f%2011" class="FloatLeft twitterShare" onclick="return openShare('http://twitter.com/share?url=http%3a%2f%2fgalltv.com%2fae%2fgall%2f2011%2f%2011')">
				<span class="left"></span>
				<span class="middle">Share on Twitter</span>
				<span class="right"></span>
			</a>
			<a target="_blank" href="http://www.facebook.com/share.php?u=http%3a%2f%2fgalltv.com%2fae%2fphoto%2f2011%2f06%2f16" class="FloatLeft HMargin10 facebookShare" onclick="return openShare('http://www.facebook.com/share.php?u=http%3a%2f%2fgalltv.com%2fae%2fgall%2f2011%2f06%2f16')">
				<span class="left"></span>
				<span class="middle">Share on Facebook</span>
				<span class="right"></span>
			</a>
			</span>
		</div>
		<div class="ItemDescription">titre_image</div>
		<div class="ItemPhotographer">Feo Pirayandeh</div>
	</li>
	<li class="PODItem">
		...
	</li>
	<li class="PODItem">
		...
	</li>
	<li class="PODItem">
		...
	</li>
	<li class="PODItem">
		...
	</li>
</ul>
J'ai essayé avec :

Code :
preg_match ('!<li class="PODItem"><img.*?(?:(?:\s+(src)="([^"]+)")|(?:\s+(alt)="([^"]+)")|(?:\s+(title)="([^"]+)")|(?:\s+[^\s]+))+.*/>\s*</li>!s'  , $ch , &$matches1);
Mais ça n'a pas marché.
apt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/06/2011, 13h22   #2
Modérateur
 
Avatar de Nesmontou
 
Homme Benjamin PREVOT
Architecte de système d'information
Inscription : septembre 2004
Messages : 1 568
Détails du profil
Informations personnelles :
Nom : Homme Benjamin PREVOT
Âge : 30
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Architecte de système d'information
Secteur : Finance

Informations forums :
Inscription : septembre 2004
Messages : 1 568
Points : 2 493
Points : 2 493
Bonjour,

Pour parcourir un document HTML et récupérer des informations, il est préférable d'utiliser DOMDocument à la place des expressions régulières.

Dans ton cas, tu peux essayer ceci :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$html = file_get_contents(dirname(__FILE__) . '/page.html'); // Récupération du contenu de la page HTML
 
$document = new DOMDocument();
$document->loadHTML($html);
 
$xpath = new DOMXPath($document);
$entries = $xpath->query('//li[@class="PODItem"]/a/img');
 
foreach ($entries as $entry) {
	echo $entry->getAttribute('alt');
}
?>
__________________
Si vous ne pouvez expliquer un concept à un enfant de six ans, c'est que vous ne le comprenez pas complètement. Albert EINSTEIN

F.A.Q. : Java, PHP, (X)HTML / CSS

N'oubliez pas de cliquer sur le bouton Résolu en bas de page quand vous avez obtenu une solution à votre problème
Nesmontou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/06/2011, 13h44   #3
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
file_get_contents + loadHTML = loadHTMLFile
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/06/2011, 13h51   #4
Modérateur
 
Avatar de Nesmontou
 
Homme Benjamin PREVOT
Architecte de système d'information
Inscription : septembre 2004
Messages : 1 568
Détails du profil
Informations personnelles :
Nom : Homme Benjamin PREVOT
Âge : 30
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Architecte de système d'information
Secteur : Finance

Informations forums :
Inscription : septembre 2004
Messages : 1 568
Points : 2 493
Points : 2 493
Citation:
Envoyé par stealth35 Voir le message
file_get_contents + loadHTML = loadHTMLFile
En effet, j'ai utilisé cette syntaxe pour que la lecture du contenu soit indépendante du chargement avec DOMDocument.

Mais tu as parfaitement raison, autant faire simple
__________________
Si vous ne pouvez expliquer un concept à un enfant de six ans, c'est que vous ne le comprenez pas complètement. Albert EINSTEIN

F.A.Q. : Java, PHP, (X)HTML / CSS

N'oubliez pas de cliquer sur le bouton Résolu en bas de page quand vous avez obtenu une solution à votre problème
Nesmontou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/06/2011, 15h53   #5
apt
Membre du Club
 
Inscription : mai 2002
Messages : 526
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 526
Points : 42
Points : 42
Voila le code final :

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
$html =  getHtmlCodeViaCurl($url);
 
$document = new DOMDocument("UTF-8");
@$document->loadHTML($html);
 
$xpath = new DOMXPath($document);
 
//img
$entries = $xpath->query('//li[@class="PODItem"][1]/a/img');
 
$src_img = $entries->item(0)->getAttribute('src');
$alt_img = $entries->item(0)->getAttribute('alt');
 
//title 
$entries = $xpath->query('//li[@class="PODItem"][1]/div[2]');
$title_img = $entries->item(0)->nodeValue;
 
//date 
$entries = $xpath->query('//li[@class="PODItem"][1]/div/span');
$date_img = $entries->item(0)->nodeValue;
 
echo '<div style="text-align:center;">';
echo '<img style="border-width: 0px; margin: 0pt auto; display: block;" alt="'.$alt_img.'" src="'.$src_img.'">';
echo '<div class="ItemDecription">'.$title_img.'</div>';
echo '<div class="ItemDate">'.$date_img.'</div>';
echo '</div>';
?>
Merci Nesmontou et stealth35.
apt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/06/2011, 16h34   #6
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
pour t'as getHtmlCodeViaCurl ? t'as des headers a fournir en plus ?
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/06/2011, 18h18   #7
apt
Membre du Club
 
Inscription : mai 2002
Messages : 526
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 526
Points : 42
Points : 42
J'ai seulement ajouté au début de code cette ligne :

Code :
header("(anti-spam-content-type:) text/html; charset=utf-8");
apt est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h08.


 
 
 
 
Partenaires

Hébergement Web