Extraire une chaine de caractère comprise entre 2 balises [Résolu]

Signaler
Messages postés
15
Date d'inscription
lundi 30 mai 2005
Statut
Membre
Dernière intervention
13 juillet 2005
-
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
-
Salut à tous,

j'aimerais pouvoir extraire la chaine de caractère comprise entre 2 balises, type et par exemple.

Je ne vois pas comment faire merci pour votre aide.

10 réponses

Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
38
preg_match_all("/(<ol>)(.*)(<\/ol>)/", $html, $matches, PREG_SET_ORDER);


In a dream, I saw me, drop dead... U was here, U cried... It was just a deam, if I die, U won't cry, maybe, U'll be happy

http://coucou747.hopto.org
Messages postés
461
Date d'inscription
mardi 27 avril 2004
Statut
Membre
Dernière intervention
16 février 2012

Salut,

j ai une solution (qui n est surement pas la meilleur)

$tab[]=explode("",$tachaine);
et dans $tab[1] tu as ta chaine sans la balise de debut.
$tab2[]=explode("",$tab[1] );
et la dans $tab2[0] tu devrait avoir ta chaine sans les balises.
une solution mais encore une fois il doit exister mieux


<HR>
On ne peut pas savoir tout faire, mais on peut tout apprendre avec du travail. Morpheus262

PS: Besoin d aide pour developper, besoin d un collaborateur pour faire votre site, contacter moi par mail
l
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
38
ton fichier est sous quel format ?

html ? xml ?



t'as tidy qui parse le html et t'as aussi un parseur xml en php

cherches sur php.net



sinon, t'as les exopressions régulières...

In a dream, I saw me, drop dead... U was here, U cried... It was just a deam, if I die, U won't cry, maybe, U'll be happy

http://coucou747.hopto.org
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
22
Hello,



plus simple en utilisant strpos () a mon avis.

Sinon une source vient d'etre postee pour ca, je ne l'ai pas testee
mais elle n'est pas tres compliquee donc devrait fonctionner :

http://www.phpcs.com/code.aspx?ID=32482
Messages postés
1154
Date d'inscription
mardi 9 septembre 2003
Statut
Membre
Dernière intervention
15 août 2009
14
un chti exple:
<?php
$chaine= " Hello World , comment ca va?";
$chaine2 =ereg_replace('<([^>])*>',' ',$chaine);
echo $chaine2; // donne: Hello World, comment ca va
?>
Messages postés
15
Date d'inscription
lundi 30 mai 2005
Statut
Membre
Dernière intervention
13 juillet 2005

en fait j'utilise ce petit programme : www.fckeditor.net, qui permet
d'editer un texte dans une page html, c'est du même type qu'ici sur les
forums.

Celui-ci produit un code, entre balise, que je transforme en Rtf par la suite.

Dans celui ci j'ai par exemple les balises :

<ol>

<li> un texte </li>

</ol>



et





<li> un autre texte </li>





Je voudrais extraire dans $valeur le contenu <li>un texte</li>



Merci d'avance.
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
38
tidy ou les expressions régulières comme je l'ai dit plus haut ou comme l'a dit :[auteurdetail.aspx?ID=162205 malik7934] (l'exemple de malik est tiré de php.net, t'aurais pu trouver le même...)

In a dream, I saw me, drop dead... U was here, U cried... It was just a deam, if I die, U won't cry, maybe, U'll be happy

http://coucou747.hopto.org
Messages postés
15
Date d'inscription
lundi 30 mai 2005
Statut
Membre
Dernière intervention
13 juillet 2005

En effet quand une seul balise existe j'y arrive avec cette méthode,
par contre se pose un problème quand j'ai plusieurs fois les mêmes
balises, que faire a ce moment la ?

utiliser List() serait une solution, mais cela veut dire que je connais le nombre d'élements,hors je ne le connais pas.

Merci beaucoup.
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
38
renseigne toi sur



preg_match_all

In a dream, I saw me, drop dead... U was here, U cried... It was just a deam, if I die, U won't cry, maybe, U'll be happy

http://coucou747.hopto.org
Messages postés
15
Date d'inscription
lundi 30 mai 2005
Statut
Membre
Dernière intervention
13 juillet 2005

Voila ou j'en suis, merci pour le preg_match_all c'est apperement ce qu'il me fallait.

Cependant je ne comprends pas tout a fait les exemples :



$html = '<ol> <li> un </li> <li> deux </li> </ol>';

preg_match_all("/(<([\w]+)[^>]*>)(.*)(<\/\\2>)/", $html, $matches, PREG_SET_ORDER);



Voila par exemple un petit code que j'ai modifier légerement. J'ai lu
la description des ( [ * ... mais je ne comprends pas trop ce qui se
passe ici.

J'aimerais que preg_match_all prenne que ce qui est compris entre <ol> et </ol>.

Un peu d'aide serait la bienvenue, merci d'avance.