J'ai besoin d'un langage de balisage simple pour stocker différentes parties d'une chaîne dans un champ TEXT, puis extraire ces parties. Donc, fondamentalement, je veux une sorte de XML simple. Stocker ceux dans le champ de la table est facile, mais les extraire ... est autre chose. j'ai réussi à le faire en utilisant un simple regex fait pour HTML normal:Une expression régulière pour extraire le texte entre deux balises et AUSSI le nom du tag
|<[^>]+>(.*)</[^>]+>|U
Mais pour recomposer le tableau original (et utiliser plus généralement le balisage) Je dois aussi connaître les noms de balises. Et cette regex ne fait pas ça.
Exemples:
texte d'entrée:
<user_input>Hello! my name is Williams</user_input>
La fonction preg_match_all() en utilisant les déclarations regex ci-dessus:
array
0 =>
array
0 => string '<user_input>Hello! my name is Williams</user_input>' (length=34)
1 =>
array
0 => string 'Hello! my name is Williams' (length=34)
j'ai besoin de retourner le nom de "user_input" du marque. Oui, je sais, je suce sur regex. Oui, je sais "utiliser un analyseur XML", mais c'est trop grand pour ce que je fais.
Votre regex est gourmande et va se casser horriblement avec quelque chose de complexe. Il ne vérifie pas que les balises correspondent. Il échouera horriblement s'il y a plus de deux étiquettes. Je suis sûr qu'il a d'autres bugs. – Turtle
_ "Donc, fondamentalement, je veux un type de XML simple." _ -il arrive que PHP arrive avec une extension appelée 'SimpleXML': http://www.php.net/simplexml –