OVH Cloud OVH Cloud

expression reguliere : bbcode

3 réponses
Avatar
Nicolas BORDE
Bonjour,

Je suis en train de me coder un site Internet relativement simple. Pour
un module j'ai besoin de gérer les bbcodes... Je n'ai pas de problèmes à
part avec ceci :

$text = preg_replace("/\(url=([^\]]*)\](.*)\[\/url\]/i","<a href=\"\\1\"
title=\"\\1\">\\2</a>",$text);


Il semblerait que la transformation ne se fasse pas et j'ai beau tourner
ça dans tous les sens je ne trouve pas d'explication :/

C'est supposé faire ceci :

[url=http://www.google.fr]Google[/url] => <a href="http://www.google.fr"
title="google.fr">Google</a>

3 réponses

Avatar
Olivier Miakinen

$text = preg_replace("/(url=([^]]*)](.*)[/url]/i","<a href="1"
title="1">2</a>",$text);

C'est supposé faire ceci :

[url=http://www.google.fr]Google[/url] => <a href="http://www.google.fr"
title="google.fr">Google</a>


Il suffit de remplacer la première parenthèse par un crochet... ah les
fautes de frappe !

Par ailleurs tu peux aussi supprimer le "" dans "[^]]" :

$text = preg_replace(
"/[url=([^]]*)](.*)[/url]/i",
"<a href="1" title="1">2</a>",
$text);

Note que ceci ne donnera pas comme title "google.fr" mais
"http://www.google.fr". Si tu veux vraiment virer le début il
faudra affiner un peu.

J'obtiens :
<a href="http://www.google.fr" title="http://www.google.fr">Google</a>

Avatar
loufoque
Nicolas BORDE a dit le 24/11/2004 22:03:

Attention, il faut une police à chasse fixe :

$text = preg_replace("/(url=([^]]*)](.*)[/url]/i","<a href="1"
^

C'est '[`, pas '(` qu'il faut

Avatar
Olivier Miakinen

Attention, il faut une police à chasse fixe :

$text = preg_replace("/(url=([^]]*)](.*)[/url]/i","<a href="1"
^



Il faudrait aussi que Mozilla Thunderbird ne décale pas les lignes qui
commencent par une espace !

Je l'ai signalé récemment pour un article écrit avec Thunderbird 0.8 sur
X11, mais je me demande si ce n'est pas un vieux bug qui est réapparu
alors qu'il semblait corrigé.

En attendant, voici un contournement : supprimer le format flowed
(certains disent « flawed ») qui est à la source du bug, en ajoutant
les deux lignes suivantes dans le fichier user.js (à créer s'il
n'existe pas) :

user_pref("mailnews.display.disable_format_flowed_support", true);
user_pref("mailnews.send_plaintext_flowed", false);

[ copie et suivi vers fr.usenet.logiciels ]

--
Olivier Miakinen
Non, monsieur le juge, je vous le jure : jamais je n'ai cité
Bruxelles dans ma signature.