Exp reg

[Résolu]
Signaler
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
-
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
-
Salut



je fais un forum OO en php4 et j'ai besoin d'un peu d'aide pour la
fonction qui transforme une variable avant de l'enregistrer : celle qui
gère le BBcode...



Pour les Urls ça marche très bien, mais c'est pour le reste : comment
faire pour éviter qu'il n'y ai pas de balise de fermeture entre deux
balise d'ouvertures : je m'explique :



[Centre]
du texte centré !/Centre

2[Exposant]2/Exposant= 4

[Italique]et en italique en même temps !!!/Italique

[Centre]encore centré !/Centre



pour le moment, tout ceci est centré car je n'ai pas réussi à dire à
mes exp_regs que les fins de balises ne devaient pas se trouver dans le
texte...





function traite($var){




$var=htmlentities($var);

//On commence par enlever les
balises html

//on ajoute les retours à la ligne

$var=nl2br($var);

//on suprime les retours à la ligne pour que . puisse désigner tout caractère

$var=str_replace('

','', $var);

//puis on remplace les URLs par des liens

$var=preg_replace('/http:\/\/([^\s]*)/i', '[index.php?action=link&page=http://\\1 http://\\1]',
$var);

//on cherche ce qui est centré


$var=preg_replace('/\[Centre\](.*)\[\/Centre\]/i',
'<center>\\1</center>', $var);

//ce qui est aligné à droite


$var=preg_replace('/\[Droite\](.*)\[\/Droite\]/i', '\\1', $var);

//ce qui est en italique


$var=preg_replace('/\[Italique\](.*)\[\/Italique\]/i',
' \\1 ', $var);

//ce qui est souligné


$var =preg_replace('/\[Souligne\](.*)\[\/Souligne\]/i',
'\\1', $var);

//ce qui est en gras

$var=preg_replace('/\[Gras\](.*)\[\/Gras\]/i', ' \\1 ', $var);

//ce qui est en exposant


$var =preg_replace('/\[Exposant\]([[:print:]]*)\[\/Exposant\]/i',
'\\1', $var);

//ce qui est en indice


$var=preg_replace('/\[Indice\]([[:print:]]*)\[\/Indice\]/i',
'\\1', $var);

//quand on a changé la taille

$var=preg_replace('/\[Taille
([1-7])\]([[:print:]]*)\[\/Taille\]/i', '\\2', $var);

return ($var);

}

In a dream, I saw me, drop dead... U was here, U cried... It was just a deam, if I die, U won't cry, maybe, U'll be happy

http://coucou747.hopto.org

7 réponses

Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
42
j'ai trouvé !!

juste pour un ? la fonction marchait mal...



function traite($var){


$var= htmlentities($var);

//On commence par enlever les
balises html

//on ajoute les retours à la ligne

$var=nl2br($var);

//on suprime les retours à la ligne pour que . puisse désigner tout caractère

$var=str_replace('

','', $var);

//puis on remplace les URLs par des liens

$var=preg_replace('/http:\/\/([^\s]*)/i', '[index.php?action=link&page=http://\\1 http://\\1]',
$var);

//on cherche ce qui est centré


$var=preg_replace('/\[Centre\](.*?)\[\/Centre\]/i',
'<center>\\1</center>', $var);

//ce qui est aligné à droite


$var=preg_replace('/\[Droite\](.*?)\[\/Droite\]/i', '\\1', $var);

//ce qui est en italique


$var=preg_replace('/\[Italique\](.*?)\[\/Italique\]/i',
' \\1 ', $var);

//ce qui est souligné


$var =preg_replace('/\[Souligne\](.*?)\[\/Souligne\]/i',
'\\1', $var);

//ce qui est en gras

$var=preg_replace('/\[Gras\](.*?)\[\/Gras\]/i', ' \\1 ', $var);

//ce qui est en exposant


$var =preg_replace('/\[Exposant\](.*?)\[\/Exposant\]/i',
'\\1', $var);

//ce qui est en indice


$var=preg_replace('/\[Indice\](.*?)\[\/Indice\]/i',
'\\1', $var);

//quand on a changé la taille

$var=preg_replace('/\[Taille
([1-7])\](.*?)\[\/Taille\]/i', '\\2', $var);

//les lignes horizontales

$var=preg_replace('/\[ligne\]/i', '<hr />', $var);

//les codes sources

$var=preg_replace('/\[code\](.*?)\[\/code\]/i', '\\1

', $var);

return ($var);

}


In a dream, I saw me, drop dead... U was here, U cried... It was just a deam, if I die, U won't cry, maybe, U'll be happy

http://coucou747.hopto.org
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
Salut Coucou :-)



Si tu souhaites rendre ton forum compatible XHTML : remplace
<center> par (ou via une
CSS par exemple)



Ensuite le par



et les par px">



Ensuite, essaie par exemple de taper le bbcode suivant dans ta textarea :



[Centre]machin



machin



/Centre



(en gros fait des sauts de ligne entre les deux balises), ça fonctionne encore ou pas ?



a ++

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
42
oui ça marche encore car avec un str_replace j'ai suprimé les retours à le ligne...

In a dream, I saw me, drop dead... U was here, U cried... It was just a deam, if I die, U won't cry, maybe, U'll be happy

http://coucou747.hopto.org
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
Heu ouais ok, sinon tu peux rajouter le m dans les options de
l'expression régulière, ça évite de le faire :-) (et aussi le s au
passage, ça facilite les choses)



a ++

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
42
après le i, mettre ms... (i en anglais, ça symbolise minutes, et ms dèrnière, ça peut être de mauvais gout... bon, je sors...)

In a dream, I saw me, drop dead... U was here, U cried... It was just a deam, if I die, U won't cry, maybe, U'll be happy

http://coucou747.hopto.org
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
lol ouais sors vite ^^



le i c'est pour la casse dans une expression régulière, le m pour les sauts de ligne et le s pour les espaces...

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
42
pour le i je savais

merci de l'astuce

In a dream, I saw me, drop dead... U was here, U cried... It was just a deam, if I die, U won't cry, maybe, U'll be happy

http://coucou747.hopto.org