Exp reg

Résolu
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 - 2 avril 2005 à 19:44
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 - 3 avril 2005 à 17:41
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

coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
2 avril 2005 à 20:54
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
3
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
3 avril 2005 à 09:14
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>
3
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
3 avril 2005 à 10:55
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
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
3 avril 2005 à 11:11
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>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
3 avril 2005 à 13:24
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
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
3 avril 2005 à 13:32
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>
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
3 avril 2005 à 17:41
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
0
Rejoignez-nous