|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Inscription : novembre 2006 Messages : 17 ![]() |
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 :
ça doit pas être très compliqué mais je cale un peu. ![]() Merci |
||
|
|
00
|
|
|
#2 |
|
Membre régulier
![]() Étudiant Inscription : juin 2011 Messages : 55 ![]() |
Code :
'#<table.*?http://www.abcd.com/lebon.*?</table>#'
a revoir : ne pas retrouver <table> avant l'url. Je lance une série de tests |
|
|
00
|
|
|
#3 | ||||
|
Invité de passage
![]() Inscription : novembre 2006 Messages : 17 ![]() |
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 :
Code :
#<table.*?http://www.abcd.com/lebon.*?</table>#s
Code html :
Merci |
||||
|
|
00
|
|
|
#4 | ||
|
Membre régulier
![]() Étudiant Inscription : juin 2011 Messages : 55 ![]() |
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 :
|
||
|
|
00
|
|
|
#5 | ||
|
Invité de passage
![]() Inscription : novembre 2006 Messages : 17 ![]() |
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 :
Si quelqu'un peut valider que ça va pas créer des bugs... Merci |
||
|
|
00
|
|
|
#6 |
![]() ![]() Inscription : septembre 2010 Messages : 7 131 ![]() |
pour parser du HTML c'est DOMDocument ...
__________________
http://blog.stealth35.com/ |
|
|
00
|
|
|
#7 |
|
Membre du Club
![]() Boris conception et traitement de documents xhtml Inscription : août 2011 Messages : 107 ![]() |
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). |
|
|
00
|
|
|
#8 | ||
|
Invité de passage
![]() Inscription : novembre 2006 Messages : 17 ![]() |
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 :
|
||
|
|
00
|
|
|
#9 | |||
![]() ![]() Inscription : septembre 2010 Messages : 7 131 ![]() |
Citation:
Code :
__________________
http://blog.stealth35.com/ |
|||
|
|
00
|
|
|
#10 |
|
Invité de passage
![]() Inscription : novembre 2006 Messages : 17 ![]() |
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 |
|
|
00
|
|
|
#11 | |
![]() ![]() Inscription : septembre 2010 Messages : 7 131 ![]() |
Citation:
__________________
http://blog.stealth35.com/ |
|
|
|
00
|
|
|
#12 |
|
Invité de passage
![]() Inscription : novembre 2006 Messages : 17 ![]() |
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 ? |
|
|
00
|
|
|
#13 | |
![]() ![]() Inscription : septembre 2010 Messages : 7 131 ![]() |
Citation:
//*[@*="%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/ |
|
|
|
00
|
|
|
#14 | ||
|
Invité de passage
![]() Inscription : novembre 2006 Messages : 17 ![]() |
Code :
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> 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... |
||
|
|
00
|
|
|
#15 |
![]() ![]() Inscription : septembre 2010 Messages : 7 131 ![]() |
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/ |
|
|
00
|
|
|
#16 |
|
Invité de passage
![]() Inscription : novembre 2006 Messages : 17 ![]() |
alors juste pour le nœud ancêtre : <div class="bb"> pour donner une idée ?
|
|
|
00
|
|
|
#17 | |
![]() ![]() Inscription : septembre 2010 Messages : 7 131 ![]() |
Citation:
__________________
http://blog.stealth35.com/ |
|
|
|
00
|
|
|
#18 |
![]() ![]() Développeur Web Inscription : août 2006 Messages : 2 700 ![]() |
Ou SimpleXML, qui est plus... simple
__________________
|
|
|
00
|
|
|
#19 |
![]() ![]() Inscription : septembre 2010 Messages : 7 131 ![]() |
__________________
http://blog.stealth35.com/ |
|
|
00
|
|
|
#20 |
|
Invité de passage
![]() Inscription : novembre 2006 Messages : 17 ![]() |
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. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com