IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

bbcode qui ne marche pas partout [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    173
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 173
    Points : 83
    Points
    83
    Par défaut bbcode qui ne marche pas partout
    Bonjour à tous

    j'ai un problème avec le bbcode couleur, je ne sais pas pourquoi sur certaines pages il ne marche pas partout correctement, peut être ai je fait une erreur de syntaxe, si quelqu'un pouvait me guider ça serair sympa.

    Je vous mets mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    function format_html($content)
    {
    	$content = preg_replace("#\[couleur=([\#\w]*?)\](.+?)\[\/couleur\]#", "<span style=\"color:$1\">$2</span>", $content);
    	$content = preg_replace("#\[taille=([\s\S]*?)\](.+?)\[\/taille\]#", "<span style=\"font-size:$1\">$2</span>", $content);
    	$content = preg_replace_callback("#\[([a-z]+?)\](.+?)\[\/\\1]#i", 'simple_replace_bbcodes', $content);
    	$content = preg_replace("#\<a href="http://(.+?)\" target="_blank">(.+?)\</a>#", "<a href=\"$1\" target=\"_blank\">$1</a>", $content);
    	$content = preg_replace("#\<a href="http://([^" target="_blank">]+?)](.+?)\</a>#", "<a href=\"$1\" target=\"_blank\">$2</a>", $content);
    	$content = preg_replace("#\[image\](.+?)\[\/image\]#", "<img src=\"$1\" border=\"0\" alt=\"\">", $content);
    	$content = preg_replace("#\[gras\](.+?)\[\/gras\]#", "<b>$1</b>", $content);
    	$content = preg_replace("#\[s\](.+?)\[\/s\]#", "<u>$1</u>", $content);
    	$content = preg_replace("#\[italic\](.+?)\[\/italic\]#", "<span style=\"font-style: italic;\">$1</span>", $content);
    	$content = preg_replace("#\[centre\](.+?)\[\/centre\]#", "<div align=\"center\">$1</div>", $content);
    	$content = preg_replace("#\[droite\](.+?)\[\/droite\]#", "<div align=\"right\">$1</div>", $content);
    	$content = preg_replace("#\[gauche\](.+?)\[\/gauche\]#", "<div align=\"left\">$1</div>", $content);
    	$content = "<p>" . nl2br($content);
    	$content = str_replace("<br/><br/>", "</p><p>", $content);
    	return str_replace("<br/><li>", "<li>", $content);
    }
    Je vous mets un lien ça se passe en bas de page, mais je peux mettre le BBCODE n'importe ou il ne marche pas, mais le dernier marche

    http://www.teeshotweb.com/astuces/as...chine-110.html

    Merci d'avance

  2. #2
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Salut

    Tu as un problème de syntaxe PHP sur les lignes des <a href à cause des guillemets.
    Je te recommande un peu de lecture : Apostrophes ou guillemets, lesquels choisir ?

    Sinon, je te recommande également de choisir entre $1 et \1 mais de ne pas mixer les deux syntaxes. Cela facilitera la relecture du code et le debogage. Je pense que $1 est plus adapté, car \1 peut changer en \\1 suivant le type de délimiteur de ta chaîne (apostrophes ou guillemets, cf. lien ci-dessus).

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    173
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 173
    Points : 83
    Points
    83
    Par défaut
    Bonjour Yogui

    Je viens de m'apercevoir que le code concernant les BBCODE url ne s'affiche pas correctement sur le forum, j'ai pourtant bien echapper tous les /. Je vais voir pour changer les " en '. Par contre je ne comprend pas ce que tu veux dire avec les /1 et $1, je n'utilise pas /1, pourrais tu me dire ou tu l'as vu ?

    Merci
    je remets les codes url, ça ne marche pas quand je copie tout le code d'un coup
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $content = preg_replace ("#\[url=([\s\S]*?)\](.+?)\[\/url\]#","<a href=\"$1\" target=\"_blank\">$2</a>", $content);
     
    $content = preg_replace("#\[url\](.+?)\[\/url\]#", "<a href=\"$1\" target=\"_blank\">$1</a>", $content);
    Merci

  4. #4
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Il me semble que si :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $content = preg_replace_callback("#\[([a-z]+?)\](.+?)\[\/\\1]#i", 'simple_replace_bbcodes', $content);
    Attention à ne pas confondre /1 (barre oblique suivie de "1") et \1 (référence arrière).

    Tu as des exemples de bbcode "url" dans mes articles

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    173
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 173
    Points : 83
    Points
    83
    Par défaut
    re

    Je viens de remplacer les " par des ' et \" par ", mais ça ne change rien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    function format_html($content)
    {
    	$content = preg_replace('#\[couleur=([\#\w]*?)\](.+?)\[\/couleur\]#', '<span style="color:$1">$2</span>', $content);
    	$content = preg_replace('#\[taille=([\s\S]*?)\](.+?)\[\/taille\]#', '<span style="font-size:$1">$2</span>', $content);
    	$content = preg_replace_callback('#\[([a-z]+)\](.+?)\[\/\\1]#i', 'simple_replace_bbcodes', $content);
    	$content = preg_replace('#\[url\](.+?)\[\/url\]#', '<a href="$1" target="_blank">$1</a>', $content);
    	$content = preg_replace('#\[url=([\s\S]*?)\](.+?)\[\/url\]#', '<a href="$1" target="_blank">$2</a>', $content);
    	$content = preg_replace('#\[image\](.+?)\[\/image\]#', '<img src="$1" border="0" alt=""/>', $content);
    	$content = preg_replace('#\[gras\](.+?)\[\/gras\]#', '<b>$1</b>', $content);
    	$content = preg_replace('#\[s\](.+?)\[\/s\]#', '<u>$1</u>', $content);
    	$content = preg_replace('#\[italic\](.+?)\[\/italic\]#', '<span style="font-style: italic;">$1</span>', $content);
    	$content = preg_replace('#\[centre\](.+?)\[\/centre\]#', '<div align="center">$1</div>', $content);
    	$content = preg_replace('#\[droite\](.+?)\[\/droite\]#', '<div align="right">$1</div>', $content);
    	$content = preg_replace('#\[gauche\](.+?)\[\/gauche\]#', '<div align="left">$1</div>', $content);
    	$content = '<p>' . nl2br($content);
    	$content = str_replace('<br/><br/>', '</p><p>', $content);
    	return str_replace('<br/><li>', '<li>', $content);
    }
    Merci

  6. #6
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Histoire de continuer à y voir plus clair, évite d'utiliser comme délimiteur un caractère que tu vas utiliser dans le masque : # est un mauvais délimiteur, tout comme / par exemple, ainsi que les caractères réservés ()[]{}\|^$ etc.

    Un bon caractère est le ~, il est visible et très peu utilisé. Cela t'évitera d'écrire \# mais simplement # par exemple

    Sinon, tu as des exemples de bbcode URL dans mes tutos

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    173
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 173
    Points : 83
    Points
    83
    Par défaut
    Merci Yogui

    je vais regarder ça.

    c'est super compliqué les bbcodes.

    Je vous tiens au courant et je reviens si je m'en sors pas .

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    173
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 173
    Points : 83
    Points
    83
    Par défaut
    Heeeuuu je voudrais pas exagerer, mais tu peux me donner un lien vers un de tes exemples de BBCODE, je ne trouve pas dans tes tutos .

    Merci

  9. #9
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Au temps pour moi, en fait c'est ici : http://php.developpez.com/faq/?page=...es_parsebbcode

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    173
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 173
    Points : 83
    Points
    83
    Par défaut
    Super, merci beaucoup.

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    173
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 173
    Points : 83
    Points
    83
    Par défaut
    Bon j'ai de la lecture, mais déja en prenant tes bbcodes ça marche parfaitement.

    Merci beaucoup

  12. #12
    Membre actif Avatar de stilobique
    Homme Profil pro
    Infographiste 3D
    Inscrit en
    Septembre 2005
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Infographiste 3D
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Septembre 2005
    Messages : 236
    Points : 277
    Points
    277
    Par défaut
    Bonjour

    Désolé de faire un peut ressortir le topic mais je n'arrive pas à comprendre quelque chose ; dans la FAQ Comment parser un bbcode ? la fin des expression est marqué par les 3 lettres : Usi ... mais je ne compren pas à quoi cela correspond !
    Environment Artist | Technical Artist | Game Art
    Porfolio Art Station

  13. #13
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    Il s'agit d'options, celles-ci sont expliquées dans le tutoriel Initiation aux expressions régulières en PHP.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Formulaire d'inscription qui ne marche pas partout
    Par Belebostre dans le forum Langage
    Réponses: 3
    Dernier message: 23/06/2008, 15h03
  2. [Système] bbcode imbriqué qui ne marche pas
    Par jexl dans le forum Langage
    Réponses: 11
    Dernier message: 22/06/2007, 12h21
  3. [RegEx] bbcode vers html qui ne marche pas
    Par jexl dans le forum Langage
    Réponses: 3
    Dernier message: 21/06/2007, 21h05
  4. [ Problème ] .htaccess qui ne marche pas "partout"
    Par nnet_mathieu dans le forum Apache
    Réponses: 8
    Dernier message: 22/11/2005, 19h34
  5. Réponses: 9
    Dernier message: 07/05/2003, 12h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo