Précédent   Forum des professionnels en informatique > PHP > Langage > Regex
Regex Forum d'entraide sur les expressions rationnelles PHP. Avant de poster -> FAQ regex, Cours de regex et Sources de regex
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/09/2007, 14h53   #1
Invité de passage
 
Inscription : juin 2007
Messages : 16
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 16
Points : 3
Points : 3
Par défaut Changer les entités HTML de balise XML

Bonjour,
je n'arrive pas à réaliser l'expression régulièere me permettant de changer
Code :
1
2
3
4
 
< tag >
       content
< /tag >
En
Code :
1
2
3
4
 
<tag>
       content
</tag>
où tag peut être n'importe quel tag (issu d'un fichier XML).
Merci pour votre aide.
Erebe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/09/2007, 15h08   #2
Membre émérite
 
Avatar de julien.63
 
Inscription : décembre 2005
Messages : 1 322
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 1 322
Points : 981
Points : 981
Envoyer un message via MSN à julien.63
Y'a sans doute plus élégant, mais ça marche...

Code php :
1
2
3
4
5
6
7
8
9
<?php
$line = ' 
&lt;tag &gt;
       content
&lt; /tag &gt;';
$line =  preg_replace("/&lt; ?/","<",$line);
$line =  preg_replace("/ ?&gt;/",">",$line);
echo trim($line);
?>
julien.63 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/09/2007, 15h11   #3
Membre émérite
 
Avatar de julien.63
 
Inscription : décembre 2005
Messages : 1 322
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 1 322
Points : 981
Points : 981
Envoyer un message via MSN à julien.63
ou aussi :
Code php :
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$line = ' 
&lt;tag &gt;
       content
&lt; /tag &gt;';
$patterns[0] = '/&lt; ?/';
$patterns[1] = '/ ?&gt;/';
$replacements[2] = '<';
$replacements[1] = '>';
 
echo trim(preg_replace($patterns,$replacements,$line));
 
?>
julien.63 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/09/2007, 15h12   #4
Invité de passage
 
Inscription : juin 2007
Messages : 16
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 16
Points : 3
Points : 3
Merci d'avoir répondu.
LE problème c'est qu'il faut que les deux tags correspondent.
Soit l'exemple:
Code :
1
2
3
&lt; tag2 &gt;
      je suis du n'importe quoi &lt; car j'aime bien &gt; compliquer
&lt; /tag2 &gt;
En fait, je ne veux vraiment que remplacer les entites HTML des balises XML et pas le reste qui peut être n'importe quoi.
Merci.
Erebe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/09/2007, 15h33   #5
Membre chevronné
 
Inscription : mars 2002
Messages : 611
Détails du profil
Informations personnelles :
Âge : 48
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : mars 2002
Messages : 611
Points : 761
Points : 761
Peut être quelque chose comme ca :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
  $str = <<<EOT
&lt; tag2 &gt;
      je suis du n'importe quoi &lt; car j'aime bien &gt; compliquer
&lt; /tag2 &gt;
&lt; tag3 &gt;
      je suis du n'importe quoi &lt; car j'aime bien &gt; compliquer
&lt; /tag3 &gt;
EOT;
 
  $res = preg_replace('%(&lt; ([^ ]*?) &gt;)(.*?)(&lt; /\2 &gt;)%si', '<$2>$3</$2>', $str);
  echo $res;
?>
Résultat :
Code :
1
2
3
4
5
6
<tag2>
      je suis du n'importe quoi &lt; car j'aime bien &gt; compliquer
</tag2>
<tag3>
      je suis du n'importe quoi &lt; car j'aime bien &gt; compliquer
</tag3>
DelphiManiac est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/09/2007, 08h29   #6
Invité de passage
 
Inscription : juin 2007
Messages : 16
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 16
Points : 3
Points : 3
Impeccable, c'est exactement cela ;-)
Merci beaucoup.
Je vais juste rajouter une condition au cas ou il y a un espace ou non dans les definitions des balises (<tag>,< tag>,<tag > ou < tag >).
Merci encore !!!
Erebe est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h00.


 
 
 
 
Partenaires

Hébergement Web