Re: Bonjour,
J'ai un problème en ce qui concerne la détection de plusieurs listes à puce en BBCode.
Pas de problème pour une seule liste à puce, mais lorsqu'il y en a plusieurs ça pose problème.
Alors quel est la bonne l'expression régulière ?
J'ai essayé le retour chariot après le dernier [/list]\r\n|\r|\n mais ça ne marche pas !
ex : texte=texte.replace(/\[list=([^\]]*)\](.+)\[\/list]\r\n|\r|\n/mig, '<ul type="$1">$2</ul>');
<html>
<head>
<title>Prévisualisation</title>
</head>
<body>
<script>
function preview(sTxta,DivPrev) {
var texte = document.getElementById(sTxta).value;
texte=texte.replace(/</g, '<');
texte=texte.replace(/>/g, '>');
texte=texte.replace(/\r\n|\r|\n/g, '<p style=\'margin-top: 0; margin-bottom: 0\'>'); // simple saut de ligne ligne
texte=texte.replace(/\n\n/mig, '<p style=\'margin-top: 10; margin-bottom: 10\'>'); // double saut de ligne
texte=texte.replace(/\[(b|u|s|i|\/b|\/u|\/s|\/i)]/gi,'<$1>');
texte=texte.replace(/\[list=([^\]]*)\](.+)\[\/list]/mig, '<ul type="$1">$2</ul>');
texte=texte.replace(/\[\*]([^\[]+)(?=(\[\*])|(<\/ul>))/mig, '<li>$1</li>');
texte=texte.replace(/\<br \/><\/ul>/gi, '</ul>');
texte=texte.replace(/<\/ul><br \/>/gi, '</ul>');
document.getElementById(DivPrev).innerHTML = texte;
}
</script>
<textarea rows="6" name="sTextarea" cols="54">sdgsdghksjdg
[b]sdgsdjhgsdkjgsd[/b]
[list=1][*] gsdgkjshdgksdhgkjsdg
[*] sdgkjshdkgh sdkjghskdg
[*] sdgkhsdkgjshdkgsjdhgkj
[/list]
gfdhfdgdsgidsugkldsj glkjdsg lkdsjg ldshgkjshdg kjdsh glkjshd glkjdshg lkjdshg lskjdghsdkljgh sdkljgshd gkljsdhgkjshd gkljdshglkdsjgh dslkjgh sdlkgjshd glkjdshglksjdhglskdgsd g .
hfdhdfh
fdhfdh
fdhdfh
dfhfd
hfdhfdh
sdgsdghksjdg
[b]sdgsdjhgsdkjgsd[/b]
[list=1][*] gsdgkjshdgksdhgkjsdg
[*] sdgkjshdkgh sdkjghskdg
[*] sdgkhsdkgjshdkgsjdhgkj
[/list]
gfdhfdgdsgidsugkldsj glkjdsg lkdsjg ldshgkjshdg kjdsh glkjshd glkjdshg lkjdshg lskjdghsdkljgh sdkljgshd gkljsdhgkjshd gkljdshglkdsjgh dslkjgh sdlkgjshd glkjdshglksjdhglskdgsd g .
hfdhdfh
fdhfdh
fdhdfh
dfhfd
hfdhfdh</textarea>
<p>
<input type="button" class="button" onclick="preview('sTextarea','DivPreview');" value="Prévisualisation" /></p>
<div id="DivPreview"><b>Prévisualisation</b></div>
</body>
</html>