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 08/09/2011, 12h55   #1
Invité de passage
 
Inscription : novembre 2006
Messages : 17
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 17
Points : 2
Points : 2
Par défaut preg_match trouver un bloc parmi d'autres

Bonjour,
je cherche quel regex pour extraire l'unique bloc qui commence par <table> et qui fini par </table> et qui contient http://www.abcd.com/lebon parmi ceux-ci :
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
$str='<table width="100%" cellspacing="0" cellpadding="0" border="0" class="tab">
  <tbody><tr>
    <td width="10" valign="top" class="img" rowspan="4"><a rel="" class="ceebox" href="3945.jpg"><img border="0" alt="nom" src="3945_mini.jpg"/></a></td>
		<td valign="top" height="16"><span style="color: rgb(5, 171, 239);" class="nom">nom</span> <span class="Style">genre</span></td>
	</tr>
	<tr>
    <td valign="top" class="Nat">FR</td>
	</tr>
	<tr>
    <td valign="top" class="Bio"><p>Physicus quidam, mathematicus et Dialecticae peritus una tramine vehuntur ut Londinium petant. Cum e cuniculo discedant, ovem nigram per fenestram cernunt. Physicus illa dicit : "Hem ! Omnes oves anglicae nigrae sunt." Mathematicus corrigit : "Minime, Tantum autumare possumus in Anglia exstare unam saltem ovem quae nigra est."
Tunc dialecticus corrigit : "Minime, tantum asserere possumus in Anglia exstitisse unam saltem ovem, per paucas secundas dumtaxat, quae nigra erat in una saltem pariete."</p></td>
	</tr>
	<tr>
    <td class="Links">
			<a target="_blank" href="http://www.abcd.com/poiu">abcd</a><a target="_blank" href="http://www.poiu.com/">site</a>
		</td>
	</tr>
</tbody></table>
<table width="100%" cellspacing="0" cellpadding="0" border="0" class="tab">
  <tbody><tr>
    <td width="10" valign="top" class="img" rowspan="4"><a rel="" class="ceebox" href="3945.jpg"><img border="0" alt="nom" src="3945_mini.jpg"/></a></td>
		<td valign="top" height="16"><span style="color: rgb(5, 171, 239);" class="nom">nom</span> <span class="Style">genre</span></td>
	</tr>
	<tr>
    <td valign="top" class="Nat">FR</td>
	</tr>
	<tr>
    <td valign="top" class="Bio"><p>Physicus quidam, mathematicus et Dialecticae peritus una tramine vehuntur ut Londinium petant. Cum e cuniculo discedant, ovem nigram per fenestram cernunt. Physicus illa dicit : "Hem ! Omnes oves anglicae nigrae sunt." Mathematicus corrigit : "Minime, Tantum autumare possumus in Anglia exstare unam saltem ovem quae nigra est."
Tunc dialecticus corrigit : "Minime, tantum asserere possumus in Anglia exstitisse unam saltem ovem, per paucas secundas dumtaxat, quae nigra erat in una saltem pariete."</p></td>
	</tr>
	<tr>
    <td class="Links">
			<a target="_blank" href="http://www.abcd.com/lebon">abcd</a><a target="_blank" href="http://www.lebon.com/">site</a>
		</td>
	</tr>
</tbody></table>
<table width="100%" cellspacing="0" cellpadding="0" border="0" class="tab">
  <tbody><tr>
    <td width="10" valign="top" class="img" rowspan="4"><a rel="" class="ceebox" href="3945.jpg"><img border="0" alt="nom" src="3945_mini.jpg"/></a></td>
		<td valign="top" height="16"><span style="color: rgb(5, 171, 239);" class="nom">nom</span> <span class="Style">genre</span></td>
	</tr>
	<tr>
    <td valign="top" class="Nat">FR</td>
	</tr>
	<tr>
    <td valign="top" class="Bio"><p>Physicus quidam, mathematicus et Dialecticae peritus una tramine vehuntur ut Londinium petant. Cum e cuniculo discedant, ovem nigram per fenestram cernunt. Physicus illa dicit : "Hem ! Omnes oves anglicae nigrae sunt." Mathematicus corrigit : "Minime, Tantum autumare possumus in Anglia exstare unam saltem ovem quae nigra est."
Tunc dialecticus corrigit : "Minime, tantum asserere possumus in Anglia exstitisse unam saltem ovem, per paucas secundas dumtaxat, quae nigra erat in una saltem pariete."</p></td>
	</tr>
	<tr>
    <td class="Links">
			<a target="_blank" href="http://www.abcd.com/azerty">abcd</a><a target="_blank" href="http://www.azerty.com/">site</a>
		</td>
	</tr>
</tbody></table>';
 
//j'ai essayé ce qui suit mais ça me renvoi toutes les tables :
 
 
$link="http://www.abcd.com/lebon";
 
$slash2p = array("/", ":");
$slash2pok   = array("\/", "\:");
 
$linkok = str_replace($slash2p , $slash2pok , $link);
 
	if(preg_match("#<table(.*?).*".$newlink.".*</table>#is", $str, $matches))
{
    echo '<pre>' . htmlentities(print_r($matches, true)) . '</pre>';
}
et surtout je veux pas faire de boucle pour trouver le résultat, preg_match doit me renvoyer l'unique bloc table qui contient http://www.abcd.com/lebon
ça doit pas être très compliqué mais je cale un peu.

Merci
flashub est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/09/2011, 14h30   #2
Membre régulier
 
Homme
Étudiant
Inscription : juin 2011
Messages : 55
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Val d'Oise (Île de France)

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : juin 2011
Messages : 55
Points : 77
Points : 77
Code :
'#<table.*?http://www.abcd.com/lebon.*?</table>#'
Edit : Ne marche pas...

a revoir : ne pas retrouver <table> avant l'url.

Je lance une série de tests
Avalion est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/09/2011, 14h49   #3
Invité de passage
 
Inscription : novembre 2006
Messages : 17
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 17
Points : 2
Points : 2
et non je vais là-dessus pour tester :
http://lumadis.be/regex/test_regex.php

et avec ton expression ça ne renvoi rien :
il faut au moins la mettre comme ça #<table.*?http://www.abcd.com/lebon.*?</table>#s
mais ça reviens à celle que j'avais donné
je test ça :
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
<table width="100%" cellspacing="0" cellpadding="0" border="0" class="tab">
  <tbody><tr>   
	</tr>
	<tr>
    <td class="Links">
			<a target="_blank" href="http://www.abcd.com/poiu">abcd</a><a target="_blank" href="http://www.poiu.com/">site</a>
		</td>
	</tr>
</tbody></table>
<table width="100%" cellspacing="0" cellpadding="0" border="0" class="tab">
  <tbody><tr>
    <td width="10" valign="top" class="img" rowspan="4"><a rel="" class="ceebox" href="3945.jpg"><img border="0" alt="nom" src="3945_mini.jpg"/></a></td>
		<td valign="top" height="16"><span style="color: rgb(5, 171, 239);" class="nom">nom</span> <span class="Style">genre</span></td>
	</tr>
	<tr>
    <td valign="top" class="Nat">FR</td>
	</tr>
	<tr>
    <td valign="top" class="Bio"><p>Physicus quidam, mathematicus et Dialecticae peritus una tramine vehuntur ut Londinium petant. Cum e cuniculo discedant, ovem nigram per fenestram cernunt. Physicus illa dicit : "Hem ! Omnes oves anglicae nigrae sunt." Mathematicus corrigit : "Minime, Tantum autumare possumus in Anglia exstare unam saltem ovem quae nigra est."
Tunc dialecticus corrigit : "Minime, tantum asserere possumus in Anglia exstitisse unam saltem ovem, per paucas secundas dumtaxat, quae nigra erat in una saltem pariete."</p></td>
	</tr>
	<tr>
    <td class="Links">
			<a target="_blank" href="http://www.abcd.com/lebon">abcd</a><a target="_blank" href="http://www.lebon.com/">site</a>
		</td>
	</tr>
</tbody></table>
et
Code :
#<table.*?http://www.abcd.com/lebon.*?</table>#s
me renvoi l'ensemble alors que je voudrai obtenir que ça:
Code html :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<table width="100%" cellspacing="0" cellpadding="0" border="0" class="tab">
<tbody><tr>
<td width="10" valign="top" class="img" rowspan="4"><a rel="" class="ceebox" href="3945.jpg"><img border="0" alt="nom" src="3945_mini.jpg"/></a></td>
<td valign="top" height="16"><span style="color: rgb(5, 171, 239);" class="nom">nom</span> <span class="Style">genre</span></td>
</tr>
<tr>
<td valign="top" class="Nat">FR</td>
</tr>
<tr>
<td valign="top" class="Bio"><p>Physicus quidam, mathematicus et Dialecticae peritus una tramine vehuntur ut Londinium petant. Cum e cuniculo discedant, ovem nigram per fenestram cernunt. Physicus illa dicit : "Hem ! Omnes oves anglicae nigrae sunt." Mathematicus corrigit : "Minime, Tantum autumare possumus in Anglia exstare unam saltem ovem quae nigra est."
Tunc dialecticus corrigit : "Minime, tantum asserere possumus in Anglia exstitisse unam saltem ovem, per paucas secundas dumtaxat, quae nigra erat in una saltem pariete."</p></td>
</tr>
<tr>
<td class="Links">
<a target="_blank" href="http://www.abcd.com/lebon">abcd</a><a target="_blank" href="http://www.lebon.com/">site</a>
</td>
</tr>
</tbody></table>

Merci
flashub est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/09/2011, 14h59   #4
Membre régulier
 
Homme
Étudiant
Inscription : juin 2011
Messages : 55
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Val d'Oise (Île de France)

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : juin 2011
Messages : 55
Points : 77
Points : 77
Oui oui j'ai vu par contre j'avais pas vu qu'il y avait ta regexp à la fin du code XD

Par contre la regexp conditionnelle c'est pas trop mon truc :s

Tu peux proceder autrement... Je te proposerai ceci

Code :
1
2
3
4
5
6
7
$pos = strpos($str,'<table');
while (strpos($str,'<table',$pos) < strpos($str,'http://www.abcd.com/lebon',$pos)) {
$pos = strpos($str,'<table',$pos);
}
 
$end = strpos($str,'</table>',$pos);
$table = substr($str,$pos,($end-$pos+9));
Avalion est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/09/2011, 19h01   #5
Invité de passage
 
Inscription : novembre 2006
Messages : 17
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 17
Points : 2
Points : 2
et oui mais non je veux pas faire de boucle je peux avoir 100 tables identiques.
je viens d'essayer ça :
#(?!.+<table.*)<table.*?http://www.abcd.com/lebon.*?</table>#s

et ça à l'air de marcher sur ça :
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
<table width="100%" cellspacing="0" cellpadding="0" border="0" class="tab">
<table width="100%" cellspacing="0" cellpadding="0" border="0" class="tab">
<table width="100%" cellspacing="0" cellpadding="0" border="0" class="tab">
  <tbody><tr>   
	</tr>
	<tr>
    <td class="Links">
			<a target="_blank" href="http://www.abcd.com/poiu">abcd</a><a target="_blank" href="http://www.poiu.com/">site</a>
		</td>
	</tr>
</tbody></table>
<table width="100%" cellspacing="0" cellpadding="0" border="0" class="tab">
  <tbody><tr>
    <td width="10" valign="top" class="img" rowspan="4"><a rel="" class="ceebox" href="3945.jpg"><img border="0" alt="nom" src="3945_mini.jpg"/></a></td>
		<td valign="top" height="16"><span style="color: rgb(5, 171, 239);" class="nom">nom</span> <span class="Style">genre</span></td>
	</tr>
	<tr>
    <td valign="top" class="Nat">FR</td>
	</tr>
	<tr>
    <td valign="top" class="Bio"><p>Physicus quidam, mathematicus et Dialecticae peritus una tramine vehuntur ut Londinium petant. Cum e cuniculo discedant, ovem nigram per fenestram cernunt. Physicus illa dicit : "Hem ! Omnes oves anglicae nigrae sunt." Mathematicus corrigit : "Minime, Tantum autumare possumus in Anglia exstare unam saltem ovem quae nigra est."
Tunc dialecticus corrigit : "Minime, tantum asserere possumus in Anglia exstitisse unam saltem ovem, per paucas secundas dumtaxat, quae nigra erat in una saltem pariete."</p></td>
	</tr>
	<tr>
    <td class="Links">
			<a target="_blank" href="http://www.abcd.com/lebon">abcd</a><a target="_blank" href="http://www.lebon.com/">site</a>
		</td>
	</tr>
</tbody></table>
</tbody></table>
</tbody></table>
il me renvoi bien la partie que je souhaite.
Si quelqu'un peut valider que ça va pas créer des bugs...

Merci
flashub est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/09/2011, 19h03   #6
Modérateur
 
Inscription : septembre 2010
Messages : 7 131
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 131
Points : 8 491
Points : 8 491
pour parser du HTML c'est DOMDocument ...
__________________
http://blog.stealth35.com/
stealth35 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/09/2011, 20h12   #7
Membre du Club
 
Homme Boris
conception et traitement de documents xhtml
Inscription : août 2011
Messages : 107
Détails du profil
Informations personnelles :
Nom : Homme Boris
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : conception et traitement de documents xhtml
Secteur : Conseil

Informations forums :
Inscription : août 2011
Messages : 107
Points : 59
Points : 59
Bonsoir,

L'insistance de Stealth pour parser du html avec DOMDocument va peut-être progressivement porter ses fruits

Pour ma part, je commence à m'y mettre et à un peu comprendre la logique de cette API (voir mon ajout d'aujourd'hui à mon post "Parser à l'aide de DOM..."), mais suis encore peu convaincu qu'il faille systématiquement utiliser DOMDocument (et son acolyte XPath, ou SimpleXML), même si intellectuellement cette démarche puisse sembler plus rigoureuse et plus cohérente que l'utilisation dévoyée de regex.

Comme je l'écrivais dans mon post, peut-être est-ce une question de "rentabilité" : il y a des éléments qui peuvent être repérés sans équivoque à l'aide d'une regex relativement simple ; pour d'autres il vaut mieux utiliser DOMDocument (qui peut parfois être la seule solution fiable).
Doc_xhtml est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/09/2011, 20h29   #8
Invité de passage
 
Inscription : novembre 2006
Messages : 17
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 17
Points : 2
Points : 2
Dom document me permet pas de chercher une expression sans boucler sur toute la page. Si ? Je peux pas me permettre de faire des foreach...
bon sinon ce que j'ai trouvé : #(?!.+<table.*)<table.*?http://www.abcd.com/lebon.*?</table>#s
c'est pas encore ça ça marche plus avec :
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
<table width="100%" cellspacing="0" cellpadding="0" border="0" class="tab">
<table width="100%" cellspacing="0" cellpadding="0" border="0" class="tab">
<table width="100%" cellspacing="0" cellpadding="0" border="0" class="tab">
  <tbody><tr>   
	</tr>
	<tr>
    <td class="Links">
			<a target="_blank" href="http://www.abcd.com/poiu">abcd</a><a target="_blank" href="http://www.poiu.com/">site</a>
		</td>
	</tr>
</tbody></table>
<table width="100%" cellspacing="0" cellpadding="0" border="0" class="tab">
  <tbody><tr>
    <td width="10" valign="top" class="img" rowspan="4"><a rel="" class="ceebox" href="3945.jpg"><img border="0" alt="nom" src="3945_mini.jpg"/></a></td>
		<td valign="top" height="16"><span style="color: rgb(5, 171, 239);" class="nom">nom</span> <span class="Style">genre</span></td>
	</tr>
	<tr>
    <td valign="top" class="Nat">FR</td>
	</tr>
	<tr>
    <td valign="top" class="Bio"><p>Physicus quidam, mathematicus et Dialecticae peritus una tramine vehuntur ut Londinium petant. Cum e cuniculo discedant, ovem nigram per fenestram cernunt. Physicus illa dicit : "Hem ! Omnes oves anglicae nigrae sunt." Mathematicus corrigit : "Minime, Tantum autumare possumus in Anglia exstare unam saltem ovem quae nigra est."
Tunc dialecticus corrigit : "Minime, tantum asserere possumus in Anglia exstitisse unam saltem ovem, per paucas secundas dumtaxat, quae nigra erat in una saltem pariete."</p></td>
	</tr>
	<tr>
    <td class="Links">
			<a target="_blank" href="http://www.abcd.com/lebon">abcd</a><a target="_blank" href="http://www.lebon.com/">site</a>
		</td>
	</tr>
</tbody></table>
 
<table width="100%" cellspacing="0" cellpadding="0" border="0" class="tab">
  <tbody><tr>  
</tbody></table>
Nothing found !
flashub est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/09/2011, 09h10   #9
Modérateur
 
Inscription : septembre 2010
Messages : 7 131
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 131
Points : 8 491
Points : 8 491
Citation:
Envoyé par flashub Voir le message
Dom document me permet pas de chercher une expression sans boucler sur toute la page. Si ?
si

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
$doc = new DOMDocument();
$doc->loadHTMLFile('test.html');
 
$xpath = new DOMXpath($doc);
$query = $xpath->query(sprintf('//*[@*="%s"]/ancestor::table', 'http://www.abcd.com/poiu'));
 
$temp = new DOMDocument();
 
foreach($query->item(0)->childNodes as $node) {
    $temp->appendChild($temp->importNode($node, true));
}
 
echo $temp->saveHTML();
__________________
http://blog.stealth35.com/
stealth35 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/09/2011, 13h02   #10
Invité de passage
 
Inscription : novembre 2006
Messages : 17
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 17
Points : 2
Points : 2
Ouahou c'est magnifique cette notation
Je connaissais pas sprintf je découvre
La puissance du DOMDocument.
Bravo

Franchement c'est magnifique, je suis scotché et il me reste beaucoup de chose à apprendre

Merci beaucoup
flashub est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/09/2011, 14h03   #11
Modérateur
 
Inscription : septembre 2010
Messages : 7 131
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 131
Points : 8 491
Points : 8 491
Citation:
Envoyé par flashub Voir le message
Ouahou c'est magnifique cette notation
Je connaissais pas sprintf je découvre
La puissance du DOMDocument.
Bravo

Franchement c'est magnifique, je suis scotché et il me reste beaucoup de chose à apprendre

Merci beaucoup
si tu veux plus d'explications n'hésite pas
__________________
http://blog.stealth35.com/
stealth35 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/09/2011, 14h14   #12
Invité de passage
 
Inscription : novembre 2006
Messages : 17
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 17
Points : 2
Points : 2
j'avoue que j'ai du mal à décrypter : *[@*="%s"]
%s je pense que c'est 'http://www.abcd.com/poiu'
mais *[@*= ça veux dire tout ce qui a autour de %s ? et ancestor::table limité à la balise table ?
flashub est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/09/2011, 14h23   #13
Modérateur
 
Inscription : septembre 2010
Messages : 7 131
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 131
Points : 8 491
Points : 8 491
Citation:
Envoyé par flashub Voir le message
j'avoue que j'ai du mal à décrypter : *[@*="%s"]
%s je pense que c'est 'http://www.abcd.com/poiu'
mais *[@*= ça veux dire tout ce qui a autour de %s ? et ancestor::table limité à la balise table ?
c'est du Xpath :
//*[@*="%s"]/ancestor::tablen’importe quelle nœud a partir de l'importe ou (//*)
dont n'importe quelle attribute est égale a (ici l'url) ([@*=truc])
on prend sélectionne l’ancêtre de ce dernier donc ici c'est table

imagine que dans ton code tu souhaites tout les liens de la classe "img"

tu feras
__________________
http://blog.stealth35.com/
stealth35 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/09/2011, 16h13   #14
Invité de passage
 
Inscription : novembre 2006
Messages : 17
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 17
Points : 2
Points : 2
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
$doc = new DOMDocument();
$doc->loadHTMLFile('test.html');
 
$xpath = new DOMXpath($doc);
$query = $xpath->query(sprintf('//*[@*="%s"]/ancestor::table', 'http://www.abcd.com/poiu'));
 
$temp = new DOMDocument();
 
foreach($query->item(0)->childNodes as $node) {
    $temp->appendChild($temp->importNode($node, true));
}
 
echo $temp->saveHTML();
cette notation marche très bien mais j'ai beau cherché je ne vois que peu d'exemple avec ancestor et sprintf
supposons :
Code :
<div class="aa">text ok </div> <div class="bb"><img class="cc" src="ii.jpg" width="82" height="80" alt="" title="" /><span class="dd"></span><h1>poiu</h1><h2>Physicus quidam, mathematicus et Dialecticae peritus una tramine vehuntur ut Londinium petant. Cum e cuniculo discedant, ovem nigram per fenestram cernunt. Physicus illa dicit : "Hem ! Omnes oves anglicae nigrae sunt." Mathematicus corrigit : "Minime, Tantum autumare possumus in Anglia exstare unam saltem ovem quae nigra est."</h2><span class="ee"><a href="http://www.abcd.com/poiu" target="_blank alt="poiu  title=poiu " >http://www.abcd.com/poiu</a></span></div>
à l'aide de la même technique je veux récupérer en prenant <h1>poiu</h1> comme recherche:
1. le contenu de la div : <div class="bb">...</div>
2. l'ensemble du bloc de <div class="aa"> à </div> de fin ?

comment faire ?
$query = $xpath->query(sprintf('//h1->nodeValue="%s"/ancestor::div', 'poiu')); ne marche évidement pas...
flashub est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/09/2011, 16h22   #15
Modérateur
 
Inscription : septembre 2010
Messages : 7 131
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 131
Points : 8 491
Points : 8 491
il va falloir faire 2 requêtes, et le <h1> et <div class="aa">, ne sont pas dans le même nœud,
le xpath c'est pas du PHP donc nodeValue ne marche pas

pour la doc de xpath
http://www.w3.org/TR/xpath/
__________________
http://blog.stealth35.com/
stealth35 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/09/2011, 16h42   #16
Invité de passage
 
Inscription : novembre 2006
Messages : 17
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 17
Points : 2
Points : 2
alors juste pour le nœud ancêtre : <div class="bb"> pour donner une idée ?
flashub est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/09/2011, 18h03   #17
Modérateur
 
Inscription : septembre 2010
Messages : 7 131
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 131
Points : 8 491
Points : 8 491
Citation:
Envoyé par flashub Voir le message
alors juste pour le nœud ancêtre : <div class="bb"> pour donner une idée ?
//h1[text()="poiu"]/ancestor::div
__________________
http://blog.stealth35.com/
stealth35 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2011, 16h08   #18
Modérateur
 
Avatar de s.n.a.f.u
 
Homme
Développeur Web
Inscription : août 2006
Messages : 2 700
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 37
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : août 2006
Messages : 2 700
Points : 3 357
Points : 3 357
Citation:
Envoyé par stealth35 Voir le message
pour parser du HTML c'est DOMDocument ...
Ou SimpleXML, qui est plus... simple
__________________
  • Avant de poser une question, n'hésitez pas à chercher dans la FAQ et les forums
  • Merci d'utiliser les balises de code (# dans l'éditeur)
  • Si votre problème est réglé, merci d'utiliser le bouton
S.N.A.F.U
s.n.a.f.u est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2011, 16h12   #19
Modérateur
 
Inscription : septembre 2010
Messages : 7 131
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 131
Points : 8 491
Points : 8 491
Citation:
Envoyé par s.n.a.f.u Voir le message
Ou SimpleXML, qui est plus... simple
non parce que HTML != XML
__________________
http://blog.stealth35.com/
stealth35 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/10/2011, 14h17   #20
Invité de passage
 
Inscription : novembre 2006
Messages : 17
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 17
Points : 2
Points : 2
Citation:
Envoyé par stealth35 Voir le message
//h1[text()="poiu"]/ancestor::div
merci beaucoup ça marche nickel.
franchement j'ai eu beau chercher j'avais pas trouvé text(), aaah le vocabulaire

bon alors comment remonter au div <div class="aa">text ok </div> au dessus ? J'en demande trop ?
pas grave sinon je vais trouver.
flashub 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 19h57.


 
 
 
 
Partenaires

Hébergement Web