S'abonner :  Newsletters    Magazines
Avis sur les produits Avis sur les logiciels Avis sur les jeux Actualités A propos de 01net
127 utilisateurs connectés

bbCode et traitement double

Généraleduweb le 02 novembre 2008 à 15h59
Bonjour,
excusez moi pour ce titre un peu étrange, mais bon j'allais pas faire un truc de 10pages pour le titre...

Donc, je reviens à mes problèmes en php,
ET je me suis mis à la création d'un bbCode à ma sauce,
et mande de bol, pas moyen de faire les fonctions
[img]http://site/photos.jpg[img]
et [url=http://site/page.html]lien[url]

sans que celle qui remplace les adresses internet pas des liens avec <a href...></a> vienne tout massacrer en donnant des machins atroces, et qui aboutissent à rien...

Pour vous éclairer, voici à quoi ressemble mon code php pour effectuer les modifications du bbCode vers le xhtml:
<?php
function bbCode_xhtml($texte)
{
$texte = htmlentities($texte);
$texte = stripslashes($texte);
$texte = nl2br($texte);

$texte = preg_replace('#\[b\](.+)\[/b\]#isU', '<strong>$1</strong>', $texte);
$texte = preg_replace('#\[i\](.+)\[/i\]#isU', '<em>$1</em>', $texte);
$texte = preg_replace('#\[quote\](.+)\[/quote\]#isU', '<blockquote>$1</blockquote>', $texte);
$texte = preg_replace('#\[titre\](.+)\[/titre\]#iU', '<h3>$1</h3>', $texte);
$texte = preg_replace('#\[color=(red|green|blue|yellow|purple|olive)\](.+)\[/color\]#isU', '<span style="color:$1">$2</span>', $texte);
$texte = preg_replace('#http://[a-z0-9._/-]+#i', '<a href="$0">$0</a>', $texte);
$texte = preg_replace('#[^>][a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}#i', '<a href="mailto:$0">$0</a>', $texte);

return $texte;
}
?>

et les remplacement qui posent problème:
$texte = preg_replace('#\[url=(http://[a-z0-9._/-]+)\](.+)\[/url\]#iU', '<a href="$1" title="$2">$2</a>', $texte);
$texte = preg_replace('#\[img\](http://[a-z0-9._/-])\[/img\]#i', '<a href="$1"><img src="$1" alt="Image" /></a>', $texte);


Je voulais donc savoir comment faire pour m'y retrouver...
Merci d'avance...

PS : je suis chez Free

-->Message édité par smilblick le 27/02/2009 11:53:09<--
Généraleduweb le 03 novembre 2008 à 10h24
help me !
please I'm lost in the sea !
lognaume le 03 novembre 2008 à 19h39
< inclued picture >
(Désolé c'était plus fort que moi... je ne peux pas t'aider pour ta question...)
-->Message édité par lognaume le 03/11/2008 19:40:10<--
Martius le 03 novembre 2008 à 21h23
Toutes tes expressions régulières sont greedy et doivent être revues :
renseigne-toi sur le symbole ? à placer après un qunatificateur (?, *, +, {a,b}, ...).
Généraleduweb le 04 novembre 2008 à 15h08
mon problème ne vient pas de là, mais du fait que preg_replace agissent 2 fois sur les adresses internet lorsqu'il s'agit de photos ou de lien ([url])...
Dragon.Tribal le 27 février 2009 à 11h26
Voila j'ai modiffier ton code, et chez moi sa fonctionne bien :youpi:

$text = preg_replace('#\[url=(http://[a-z0-9._/-]+)\](.+)\[/url\]#iU', '<a href="$1" title="$2">$2</a>', $text);
$text = preg_replace('#\[img\](http://[a-z0-9._/-]+)\[/img\]#i', '<a href="$1"><img src="$1" alt="Image" /></a>', $text);
Généraleduweb le 27 février 2009 à 13h49
merci, j'avais oublié un "+"
j'ai modifié un bout du code
$texte = preg_replace('#\[url=(http://[a-z0-9._/-]+)\](.+)\[/url\]#iU', '<a href="$1" title="$1">$2</a>', $texte);
$texte = preg_replace('#\[img\](http://[a-z0-9._/-]+)\[/img\]#iU', '<a href="$1"><img src="$1" alt="Image" /></a>', $texte);
$texte = preg_replace('#http://[a-z0-9._/-]+ #i', '<a href="$0">$0</a>', $texte);
$texte = preg_replace('#^http://[a-z0-9._/-]+$#i', '<a href="$0">$0</a>', $texte);


avec ça
[url=http://site]blabla[url]
et
[ img ]http://site.com/img.jpg[/ img ]
marchent ainsi que le remplacement de http://site.com mais avec un espace après dans du texte et sans espace quand il est seul !

-->Message édité par Généraleduweb le 27/02/2009 13:51:14<--


PRODUITS

TÉLÉCHARGER - LOGICIELS

JEUX VIDÉOS

LOISIRS

01NET PRO

AVIS ET COMMENTAIRES

A PROPOS DE 01NET

publicité
> Jeu en ligne
Everest Poker
Profitez de 300$ de bonus de bienvenue.

Service 01net
Newsletters 01net
abonnez vous gratuitement !
  
01Informatique
01 INFORMATIQUE
L'hebdo de référence des décideurs informatiques.
Micro Hebdo
MICRO HEBDO
L'hebdo qui vous simplifie la micro
et Internet.
L'Ordinateur Individuel
L'ORDINATEUR INDIVIDUEL
Le mensuel informatique qui vous informe et vous conseille.
Nous contacter  |  Charte de confiance  |  Voir notice légale

01net.  -  01men  -  RMC  -  BFM Radio  -  BFM TV  -  TousLesPodcasts  -  01informatique.fr  -  Association RMC-BFM
Tous droits réservés © 1999 - 2009 Internext - 01net.