[RESOLU] a votre avis ?

Petit nouveau ! | 2 Messages

26 mai 2015, 22:58

Bonjour,

j'aimerai savoir si c'est possible et de quel façon puis-je transformer un ligne comme ceci :

Code : Tout sélectionner

$test="div[header[]nav[]div[section[]aside[]]footer[]]";
en ceci :

Code : Tout sélectionner

<div> <header></header> <nav></nav> <div> <section></section> <aside></aside> </div> <footer></footer> </div>
quel est le moyen le plus simple pour y arriver ?

merci d'avance.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

27 mai 2015, 12:04

Bonjour,

Oui c'est possible, avec des regex un peu évoluées...

Je commencerait par le plus simple à savoir le cas des balises vides :
<?php

$test="div[header[]nav[]div[section[]aside[]]footer[]]";

$balises_simples=preg_replace('`([a-z]+)\[\]`i', '<$1></$1>', $test);
var_dump($balises_simples);
//div[<header></header><nav></nav>div[<section></section><aside></aside>]<footer></footer>]
Puis les balises qui en incluent d'autres...
$balises_completes=preg_replace('`([a-z]+)\[([a-z<>\/]+)\]`i', '<$1>$2</$1>', $balises_simples);
var_dump($balises_completes); print "<hr />";
Par contre, il faut mettre cette deuxième fonction je pense dans une boucle pour qu'elle soit récursive jusqu'à temps qu'il n'y ait plus de tag inclus dans un tag
Quand tout le reste a échoué, lisez le mode d'emploi...

Petit nouveau ! | 2 Messages

27 mai 2015, 14:21

Je n'ai pas pas pensé a la boucle car j'ai pas compris pourquoi dans le premier preg_replace, il me change tout ce qu'il trouve et dans le second pas ??? C'est la que j'ai caler en fait .

ça fonctionne nickel , un tout grand merci :wink: