Bonjour à tous,

Voila j'ai mit en place un système de bbcode comme dans le tutoriel vidéo que Graf' nous a fait. Néanmoins, j'essaye de pousser un peu plus loin ce système en y ajoutant par exemple la possibilité d'avoir une liste ordonnée ou non ordonnée (<ul><li>....</li></ul>).

J'ai donc mis en place ma règle comme suit :

'\[liste]\s((.*|\s)+)\\/liste\]' => '<ul><li>$1</li></ul>'

Le problème est que quand je crée ma liste et bien ça donne ceci :

[liste]
item 1
item 2
[/liste]

Et que je n'ai pour le moment la possibilité d'avoir en sorti qu'une seul item :

<ul>
    <li>item 1 item 2</li>
</ul>

Je n'arrive pas à voir comment avoir :

<ul>
    <li>item 1</li>
    <li>item 2</li>
</ul>

4 réponses


Hardware
Réponse acceptée

Moi j'ai fait comme ça : [code]$in = array( '#[list\=(circle|square|disc)]\n(.*?)[\/list]#sm', '#[list\=(1|A|a|I)]\n(.*?)[\/list]#sm', '#[\]\s?(.\?)\n#sm' ); $out = array( '

$2', '
$2', '- $1
' ); $text = preg_replace($in, $out, $text);[/code] Ce n'est peut-être pas la meilleur solution mais ça marche :P @+

AlexShrez
Réponse acceptée

Bonjour, Je croit que j'ai la solution à ton Problème. Aucun regex n'est utile ici, utilise str_replace() ! [code] // On remplace les balises BBcode : $Text = str_replace(array('', '**', '- '), array('

', '', '- '), $Text); // On supprime le parasite
juste après le
$Text = preg_replace('/\
(.*)\/isU', '
', $Text); [/code] Voila j'espère que ça va t'aider.

Hellow, j'ai fait de cette manière : -> Ajouter la balise li dans le fichier JS. (- en BBCode) -> Convertir en PHP : [code]'[list](.*?)[\/list]' => '

$1', '[\](.*?)[\/\]' => '- $1
'[/code] Et il faut aussi mettre à la fin de la regex un échappement s (escape) ex : preg_replace('/' . $k . '/s', $v, $texte) Voilà.. Bye. :p

mespeche
Auteur

Justement j'aimerai que cela se fasse automatiquement et non pas en ajoutant manuellement les balises - =p