JeuWeb - Crée ton jeu par navigateur
[Javascript] RegExp Multiple - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : [Javascript] RegExp Multiple (/showthread.php?tid=2600)



[Javascript] RegExp Multiple - Psykose - 24-05-2008

Bonjour à tous,
Je suis en train de bosser sur un système de prévisualisation en Javascript à l'aide des RegExp. Mais seulement il ne m'applique que la transformation qu'une fois Sad
(j'imagine qu'il doit manquer un parmetre dans mon regExp mais je vois pas ou ...)

Voila mon code :
Code PHP :
<?php 
<script language="Javascript">
function
BBcode(){
var
string = document.getElementById('txt').value;

var
gras = new RegExp("\\[g\\](.+)\\[/g\\]", "gi");
var
italique = new RegExp("\\[i\\](.+)\\[/i\\]", "gi");
var
image = new RegExp("\\[img\\](.+)\\[/img\\]", "gi");
var
url_1 = new RegExp("\\[url\\](.+)\\[/url\\]", "gi");
var
url_2 = new RegExp("\\[url=(.+)\\](.+)\\[/url\\]", "gi");
var
couleurs = new RegExp("\\[c=(.+)\\](.+)\\[/c\\]", "gi");
var
sautdelignes = new RegExp("\n", "gi");
var
spoiler = new RegExp("\\[spoiler\\](.+)\\[/spoiler\\]")
str = string.replace(gras, "<strong>$1</strong>");
str = str.replace(italique, "<em>$1</em>");
str = str.replace(image, "<img src=\"$1\">");
str = str.replace(url_1, "<a href=\"$1\">$1</a>");
str = str.replace(url_2, "<a href=\"$1\">$2</a>");
str = str.replace(couleurs, "<span style=\"color : $1\">$2</span>");
str = str.replace(sautdelignes, "<br />");

if(
string.length > 500){
if(
confirm('Votre chaine fais plus de 500 caractères, le reste ne sera pas enregistré, voulez vous quand même voir la prévisulation ?')){
document.getElementById('previewer').innerHTML = str;
}
else{
/*On ne montre pas la prévisualition ... */
document.getElementById('previewer').innerHTML = '<em>Message trop long</em>';
}

}

else{
document.getElementById('previewer').innerHTML = str;
}
}
</
script>



RE: [JS]RegExp Multiple - Anthor - 25-05-2008

Code PHP :
<?php 
search
= new Array(
/\[
img\](.*?)=\1\[\/img\]/,
/\[
url=([\w]+?:\/\/[^ \\"\n\r\t<]*?)\](.*?)\[\/url\]/,
/\[url\]((www|ftp|)\.[^ \\"
\n\r\t<]*?)\[\/url\]/,
/\[
url=((www|ftp|)\.[^ \\"\n\r\t<]*?)\](.*?)\[\/url\]/,
/\[email\](([a-z0-9&\-_.]+?)@([\w\-]+\.([\w\-\.]+\.)?[\w]+))\[\/email\]/,
/\[b\](.*?)\[\/b\]/,
/\[url\](http:\/\/[^ \\"
\n\r\t<]*?)\[\/url\]/);

replace = new Array(
"<img src=\"$1\" alt=\"An image\">",
"<a href=\"$1\" target=\"blank\">$2</a>",
"<a href=\"http://$1\" target=\"blank\">$1</a>",
"<a href=\"$1\" target=\"blank\">$1</a>",
"<a href=\"mailto:$1\">$1</a>",
"<b>$1</b>",
"<a href=\"$1\" target=\"blank\">$1</a>");

for(
i = 0; i < search.length; i++) {
text = text.replace(search[i],replace[i]);
}

Quelque chose dans ce style la.


RE: [JS]RegExp Multiple - Psykose - 27-05-2008

merci Anthor mais mon problème n'est pas résolu.

En effet le code que tu me proposes là ne me permais pas de modifier plusieurs fois une même occurence ...


RE: [JS]RegExp Multiple - Anthor - 27-05-2008

Suffit juste de l'adapter à ton cas ^^


RE: [JS]RegExp Multiple - Psykose - 27-05-2008

nan tu n'as pas bien compris, le meilleur devrait être un exemple :
je met
Code :
[b]gras[/b] et un deuxieme [b]gras[/b]
et ça ne me met pas le deucieme "gras" en gras ^^


RE: [JS]RegExp Multiple - Anthor - 27-05-2008

Code PHP :
<?php 
function BBCode()
{
var
text = document.getElementById('txt').value;

search = new Array(
/[
img](.*?)=1[/img]/ig,
/\[
email\](([a-z0-9&\-_.]+?)@([\w\-]+\.([\w\-\.]+\.)?[\w]+))\[\/email\]/ig,
/\[
b\](.*?)\[\/b\]/ig,
/\[
url\](http:\/\/[^ \\"nrt<]*?)[/url]/ig);

replace = new Array(
"
<img src=\"$1\" alt=\"An image\">",
"<a href=\"mailto:$1\">$1</a>",
"<b>$1</b>",
"<a href=\"$1\" target=\"blank\">$1</a>");

for(
i = 0; i < search.length; i++) {
text = text.replace(search[i],replace[i]);
};

alert(text);

return;
}