Itération et regex

Eléphant du PHP | 447 Messages

20 janv. 2010, 20:18

Buenas tardes!

exposé du problème:

* j'ai un fichier html composé d'une succession de chaines, chacunes étant encadrées par <p> et </p>
* je veux insérer en bdd chaque chaîne séparément (une entrée pour chacunes)

Quelle expression régulière, au sein d'un traitement itératif, me permettrait de parvenir au résultat escompté?

Un bien grand et humble merci pour vos avis! : )
Probably (only a) Human Problem?

ViPHP
AB
ViPHP | 5818 Messages

20 janv. 2010, 22:24

Sur le principe tu peux essayer

Code : Tout sélectionner

$texte = 'ta chaine de caractères'; preg_match_all('#<p>(.+)</p>#U', $texte, $matches); $contenu_p = $matches[1]; echo '<pre>'; print_r($contenu_p); echo '</pre>';
Normalement si tout se passe bien le contenu de tes lignes se trouvera dans le tableau $contenu_p

Eléphant du PHP | 447 Messages

21 janv. 2010, 07:35

Génial!! Merci beaucoup AB! : )
Probably (only a) Human Problem?

FredoMkbFr
Invité n'ayant pas de compte PHPfrance

21 janv. 2010, 12:40

Bonjour :-)

Juste un petit complément au code proposé par AB, ce n'est pas toujours nécessaire, mais c'est une bonne habitude à prendre de bien penser à protéger (échapper) certains caractères, notamment les balises Html, pour ça il y a une fonction toute faite "preg_quote()", donc :

Code : Tout sélectionner

$texte = 'ta chaine de caractères'; $debut_p = preg_quote('<p>'); $fin_p = preg_quote('</p>'); preg_match_all('#'.$debut_p.'(.+)'.$fin_p.'#U', $texte, $matches); $contenu_p = $matches[1]; echo '<pre>'; print_r($contenu_p); echo '</pre>';
Voilô :-)

Eléphant du PHP | 447 Messages

21 janv. 2010, 13:02

Je connaissais pas... merci pour l'info! : )
Probably (only a) Human Problem?

ViPHP
ViPHP | 5462 Messages

22 janv. 2010, 15:11

si ta un fichier html et que tu veux le parser pour recuperer des donnée il faut utiliser DomDocument, c'est la pour ca
http://php.net/manual/fr/class.domdocument.php

Eléphant du PHP | 447 Messages

22 janv. 2010, 16:14

Irie! raaaaaaaaaastafari! i'n'i!!

Merci stealth!

Pour la peine je t'offre ce tune:

http://www.youtube.com/watch?v=yZwRg8O91sw

Sois bénis! : )
Probably (only a) Human Problem?