|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Inscription : novembre 2012 Messages : 1 ![]() |
Bonjour,
voilà je fait appel à vous car je suis bloqué... Je souhaite "simplement" récupérer se qui se trouve entre <table class="infobox_v2" cellspacing="7"> et </table> dans une page distante. Je sais déjà récupérer tout le code source de la page distante dans une chaîne, mais après je suis bloqué. Merci beaucoup de votre aide ! |
|
|
02
|
|
|
#2 |
![]() ![]() Développeuse PHP/Java Inscription : avril 2007 Messages : 4 283 ![]() |
Visiblement, c'est du HTML (donc du xml). Tu peux donc parser le tout avec DOMDocument.
Ou alors utiliser un masque du genre : '#<table class="infobox_v2" cellspacing="7">(.*)</table>#'
__________________
Modératrice PHP Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur) Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [CODEINLINE=php][/CODEINLINE] |
|
|
00
|
|
|
#3 | ||
|
Membre régulier
![]() Indep Web Inscription : novembre 2007 Messages : 68 ![]() |
Bonjour Mat,
Code :
|
||
|
|
00
|
|
|
#4 |
|
Membre habitué
![]() Inscription : mars 2009 Messages : 106 ![]() |
Bonjour,
je te conseil d'ajouter un point d'interrogation aprés le * ou le + sur les exemples précédants, soit *? et +?, car + et * sont des quantificateurs gloutons qui chercheront à avoir le plus grande correspondance possible sauf si tu les "dégloutonnes" avec un point d'interrogation. Donc si tu dois matcher ce code html par exemple et que tu n'as pas fait rempart à la gloutonnerie des quantificateur: Code :
<table class="infobox_v2" cellspacing="7"><tr><td>haut les mains</td></tr></table><table class="infobox_v2" cellspacing="7"><tr><td>peau de lapin</td></tr></table> Code :
<tr><td>haut les mains</td></tr></table><table class="infobox_v2" cellspacing="7"><tr><td>peau de lapin</td></tr> Si dans ta regex tu veux que tous tes quantificateurs se comportent de manière non gloutonne tu peux aussi utiliser le modificateur U (<-- Ungreedy = pas glouton) et ne pas avoir à mettre un point d'interrogation dégloutonnisateur après chacun d'eux (si un jour tu en as plusieurs). Autre chose, par défaut le "." matche n'importe quel caractère sauf les nouvelles lignes. Pour ça, tu dois utiliser le modificateur s qui permet au point de prendre en compte un passage à la ligne. Sinon si <table et </table> sont sur des lignes différentes, tu ne trouveras rien. D'où: Code :
preg_match_all('#<table\sclass="infobox_v2"\scellspacing="7">(.*?)</table>#s', $codeSource, $resultat); Code :
preg_match_all('#<table\sclass="infobox_v2"\scellspacing="7">(.*)</table>#sU', $codeSource, $resultat); |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com