[RESOLU] Parse, regex, code html avec simple quote.

Mammouth du PHP | 504 Messages

24 mars 2014, 16:47

Bonjour a tous,

Je cherche a récuperer et parser du code html à partir d'une page, j'utilise xpath.

Je souhaite faire un regex pour une partie pour afficher le code d'une partie de la page appelé.
$reg = '#<div class="annuaire-etablissement-infos">(.*)</div>#';
preg_match($reg, preg_quote($html), $matches);
echo $matches[0];
J'ai rien retour. :?

Mon code a contenu dans cette partie ressemble à ça:
<div class="annuaire-etablissement-infos">
<p>
&Eacute;tablissement privé <br/>
<br/>
rue Léon Blum<br/>75001 <span class="nom-commune">Ambérieu-en-Bugey</span><br/>
T&eacute;l. xxxxxxx&nbsp;/&nbsp;Fax. xxxxxx<br/><br/>
<a href="xxxxxx?code=xxxxx">Contacter l'&eacute;tablissement</a><br/><a target="_blank" href="xxxxx">Consulter le site de l'&eacute;tablissement</a><br/><a target="_blank" href="xxxxxxxxx">Localiser l'&eacute;tablissement</a><br/><br/>
Code &eacute;tablissement : xxxxxx <br/></p>
</div>
Il y a des point virgule et des simple quote dans cette partie comme dans le reste de la page.

Lorque je passe en xpath, cela fonctionne mais j'ai encore du traitement derriere ça, donc pas pratique.

A noter:
$html = file_get_contents($url);
var_dump($html);
Fonctionnel.

Merci de votre aide.

Eléphant du PHP | 453 Messages

24 mars 2014, 19:39

Salut,

Ton pattern est mauvais. ;)

Là je viens de corriger légèrement (j'ai fait ça en 5 minutes). Il ne te reste plus qu'à l'améliorer. Tu verras que c'est loin d'être parfait mais en lisant, tu vas comprendre pourquoi ton pattern est erroné. :
$pattern = '#\b<div class="annuaire-etablissement-infos">(\n|\r)+|(.+)(\n|\r)+|(.+)</div>\b#';
La Tux attitude avec les kiw'z syou plait
Komodo Edit - Inkscape - Dia

Mammouth du PHP | 504 Messages

24 mars 2014, 23:54

Merci @Niuxe.

Je vais bosser dessus.

Si tu as une bonne doc sur les regex, je suis preneur. Je suis nul en regex. je saisis pas la logique de ce truc :?

Eléphant du PHP | 453 Messages

25 mars 2014, 01:27

Merci @Niuxe.

Je vais bosser dessus.

Si tu as une bonne doc sur les regex, je suis preneur. Je suis nul en regex. je saisis pas la logique de ce truc :?
Ca dépend :

Tu as la traduction de l'excellent livre d'O Reilly. Un must !
Sinon, si tu préfères les cookbook, tu as cet excellent bouquin : (http://shop.oreilly.com/product/0636920023630.do)

Sur le net :
http://www.expreg.com
http://www.lumadis.be/regex/tuto_pcre.php

Tu veux tester tes RegEx :
http://www.lumadis.be/regex/test_regex.php?lang=fr

Il me semble que le webmaster de lumadis.be est un membre de phpfrance. En ce qui concerne les tutos que je t'ai donné, ils me paraissent vraiment pas mal. Je connaissais les RegEx avant de connaître ces liens.

Pour décortiquer mon pattern, c'est simple :

Code : Tout sélectionner

(\n|\r)+|(.+)
Soit une nouvelle ligne plusieurs fois, soit un retour chariot plusieurs fois soit n'importe quel caractère plusieurs fois. La partie que tu devras affiner sera sûrement au niveau des quantificateurs. On voit clairement que ce pattern n'est pas terminé, mais je voulais te mettre sur la piste. ;)

@+
La Tux attitude avec les kiw'z syou plait
Komodo Edit - Inkscape - Dia

Mammouth du PHP | 504 Messages

26 mars 2014, 13:23

Merci @Niuxe; Résolu

Eléphant du PHP | 453 Messages

26 mars 2014, 14:01

de rien je t'en prie. :)
La Tux attitude avec les kiw'z syou plait
Komodo Edit - Inkscape - Dia