Page 1 sur 1

a votre avis ?

Posté : 26 mai 2015, 22:58
par alpgdev
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.

Re: a votre avis ?

Posté : 27 mai 2015, 12:04
par @rthur
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

Re: a votre avis ?

Posté : 27 mai 2015, 14:21
par alpgdev
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: