Faire une boucle sur des balises

djpunk Messages postés 32 Date d'inscription jeudi 9 janvier 2003 Statut Membre Dernière intervention 20 novembre 2006 - 4 nov. 2004 à 22:13
djpunk Messages postés 32 Date d'inscription jeudi 9 janvier 2003 Statut Membre Dernière intervention 20 novembre 2006 - 6 nov. 2004 à 00:07
Oulala ca va être bien compliqué à expliquer :-)

En fait je voudrais pouvoir lire entre deux balises le texte qui est écrit et pouvoir l'interpreter ensuite de façon différente en fonction de la balise. Je détail... par exemple sur une balise <SUJET>Mon sujet</SUJET> je puisse afficher Mon sujet en gras, puis continuer à lire le fichier de façon à écrire ensuite par exemple <QUESTION>Ma question</QUESTION> et que Ma question puisse s'afficher en italique.

Merci d'avance :-)

17 réponses

ToblerOWNED Messages postés 18 Date d'inscription lundi 8 septembre 2003 Statut Membre Dernière intervention 8 novembre 2004
4 nov. 2004 à 22:52
tu mets ton texte dans une variable $montexte par exemple.
ensuite le plus simplement du monde, tu fais un str_replace()
exemple :
<?php
   $montexte = " <SUJET>Mon sujet</SUJET> je puisse afficher Mon sujet en gras, puis continuer à lire le fichier de façon à écrire ensuite par exemple <QUESTION>Ma question</QUESTION>"

$montexte = str_replace("<sujet>","",$montexte);
$montexte = str_replace("</sujet>","",$montexte);
$montexte = str_replace("<question>","",$montexte);
$montexte = str_replace("</question>","",$montexte);

echo $montexte;
?>


Ya pas plus simple
--------------------------

#68 - Yverdonducs.ch
0
djpunk Messages postés 32 Date d'inscription jeudi 9 janvier 2003 Statut Membre Dernière intervention 20 novembre 2006
4 nov. 2004 à 22:56
Oui mais le problème c'est que moi je voudrais après utiliser ce qui se trouve entre les balises pour pouvoir l'utiliser pour autre chose.
0
ToblerOWNED Messages postés 18 Date d'inscription lundi 8 septembre 2003 Statut Membre Dernière intervention 8 novembre 2004
4 nov. 2004 à 23:16
Ah ok... la c'est plus compliqué... mais faisable...
bien que je vois pas comment la... je vais chercher...

--------------------------

#68 - Yverdonducs.ch
0
djpunk Messages postés 32 Date d'inscription jeudi 9 janvier 2003 Statut Membre Dernière intervention 20 novembre 2006
4 nov. 2004 à 23:20
Merci c'est sympa :-)

En fait je veux créer un fichier style XML et ensuite le lire afin d'afficher plusieurs évenement type Javascript à la suite.

Je sais que c'est pas évident mais quand ça marchera je serais bien content :-)

Je vais aller dormir un peu en te remerciant d'avance!

A plus!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ToblerOWNED Messages postés 18 Date d'inscription lundi 8 septembre 2003 Statut Membre Dernière intervention 8 novembre 2004
4 nov. 2004 à 23:28
voila j'ai trouvé essaye ca:
<?php
do
{
  $debut = strstr($montexte,'<question>');
  $debut = substr($montexte,strlen("<question>"),strllen($montexte)-strlen("<question>"));

$position=strpos($debut,">")
$texteentrebalises=substr($debut,0,$position);

}while(!ereg("<question>",$montexte))
?>

Voila ca devrait marcher avec quelques réglages... après a toi de voir pour trouver une méthode pour faire ca plusieurs fois sur le texte...
--------------------------

#68 - Yverdonducs.ch
0
AkeluX Messages postés 113 Date d'inscription samedi 15 mai 2004 Statut Membre Dernière intervention 9 mars 2007 2
5 nov. 2004 à 16:52
Aie ... moi je dirai qu il faut plutôt chercher du côté des fonctions XML ... parce que c +ou- du XML ce que tu fais là ...

Regarde par là http://ch2.php.net/manual/fr/ref.xml.php , le deuxième exemple ... c pas bien compliqué dis moi quand tu as essayé ...

AkeluX
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
5 nov. 2004 à 19:28
Salut :-)

Je me tournerais plutôt vers une expression régulière :

preg_match('`<(.+?)>(.+?)</(.+?>`',$ton_texte,$tableau);

$nb=count($tableau);

for($i=0;$i<$nb;$i++)
{
switch($tableau[$i][0])
{
case 'gras': //si tu as une balise

$texte=str_replace('<gras>','',$texte);
$texte=str_replace('
','',$texte);

$entre_les_balises=$tableau[$i][1]; //Tu veux ça, ce qui est entre les balises

break;

}

}

Bon j'ai fait ça de tête, si ça marche pas je testerai ça plus en détail :-)

a ++

http://www.vulgarisation-informatique.com : entraide, dépannage et vulgarisation informatique
0
djpunk Messages postés 32 Date d'inscription jeudi 9 janvier 2003 Statut Membre Dernière intervention 20 novembre 2006
5 nov. 2004 à 22:58
Aller je tente un peu toutes vos propositions et je vous dit ce qui a le mieux été pour mon cas =)
0
djpunk Messages postés 32 Date d'inscription jeudi 9 janvier 2003 Statut Membre Dernière intervention 20 novembre 2006
5 nov. 2004 à 23:37
Anthomicro cela me trouve la valeur "g" seulement pour $tableau[1][0]; ce qui fait qu'il ne trouve jamais la valeur "gras" pour le switch :-/

#Pinky [www.e-goss.com]
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
5 nov. 2004 à 23:39
heu ok mais tes balises s'appellent comment ?

http://www.vulgarisation-informatique.com : entraide, dépannage et vulgarisation informatique
0
djpunk Messages postés 32 Date d'inscription jeudi 9 janvier 2003 Statut Membre Dernière intervention 20 novembre 2006
5 nov. 2004 à 23:42
Ben dans mon cas elles s'appelles
<SUJET></SUJET>
<QUESTION></QUESTION>
<REPONSE></REPONSE>

Juste les 3 là

#Pinky [www.e-goss.com]
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
5 nov. 2004 à 23:46
Et bien tu remplaces ça :

case 'gras': //si tu as une balise

$texte=str_replace('<gras>','',$texte);
$texte=str_replace('
','',$texte);

$entre_les_balises=$tableau[$i][1]; //Tu veux ça, ce qui est entre les balises

break;

par ça :

case 'SUJET': //si tu as une balise <SUJET>

$texte=str_replace('<SUJET>','',$texte);
$texte=str_replace('</SUJET>','',$texte);

$entre_les_balises=$tableau[$i][1]; //Tu veux ça, ce qui est entre les balises

break;

Après dis moi ce que tu as stp

a ++

http://www.vulgarisation-informatique.com : entraide, dépannage et vulgarisation informatique
0
djpunk Messages postés 32 Date d'inscription jeudi 9 janvier 2003 Statut Membre Dernière intervention 20 novembre 2006
5 nov. 2004 à 23:49
Oui je me doutait bien du changement là :-)

Mais ça ne marche pas car le $tableau[$i][0] ne retour qu'une seul lettre et nom tout le mot GRAS ou SUJET

#Pinky [www.e-goss.com]
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
5 nov. 2004 à 23:51
Alors enlève le [0] pour ne laisser que $tableau[$i]

a +

http://www.vulgarisation-informatique.com : entraide, dépannage et vulgarisation informatique
0
djpunk Messages postés 32 Date d'inscription jeudi 9 janvier 2003 Statut Membre Dernière intervention 20 novembre 2006
5 nov. 2004 à 23:58
Pour [0] il me trouve le texte entre les balises, pour [1] il me donne "gras", pour le [2] il me redonne le texte entre les balises et pour [3] de nouveau "gras" :-/

Je capte pas bien le système du preg_match en fait :-/

#Pinky [www.e-goss.com]
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
6 nov. 2004 à 00:00
et bien tu mets alors dans le switch "1" à la place de 0 pour l'indice

et ensuite tu modifies ça : $entre_les_balises=$tableau[$i][1]

par ça : $entre_les_balises=$tableau[$i][0]

http://www.vulgarisation-informatique.com : entraide, dépannage et vulgarisation informatique
0
djpunk Messages postés 32 Date d'inscription jeudi 9 janvier 2003 Statut Membre Dernière intervention 20 novembre 2006
6 nov. 2004 à 00:07
Toujours rien :-/

Essai par toi même et tu verras que ca ne retourne que la première lettre de la balise

#Pinky [www.e-goss.com]
0
Rejoignez-nous