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 - expressions régulieres [RegEx]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 71
    Par défaut bbcode - expressions régulieres
    Bonjour
    Je me fais un petit bbcode et une de mes expressions régulieres me pose probleme
    Voici 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 replaceByTag($contenuP){
             $aRegExp=[];
             $aTag=[];
     
             $aRegExp[0]='#\[\/TEXTE\]#';
    		 $aRegExp[1]='#\[TEXTE POLICE=\"([a-zA-Z]*)\"\]#';---> l’expression réguliere qui pose probleme 
     
    		 $aTag[0]="</FONT>";
    		 $aTag[1]="<FONT FACE=\"$1\">";
             //$aRegExp[2]=/\[image id=\"([a-zA-Z0-9-_]*\.(jpg|png|gif))\"src=\"image\/([a-zA-Z0-9-_]*\.(jpg|png|gif))\"\]/g;
            echo count($aRegExp);
    		 for($j=0;$j<count($aRegExp);$j++){
    			 echo $j;
    		 $texte = preg_replace($aRegExp[$j],$aTag[$j],$contenuP);
     
    		 }
    		 echo "<br>".$texte."";
             }
    l’expression devait me retourner avec [TEXTE POLICE="Verdana"]hello[/TEXTE] le code html suivant <FONT FACE="Verdana">hello</FONT> et là j'ai
    <FONT FACE="Verdana">hello[/TEXTE] j'ai beau regarder ce qu ne va pas je ne trouve pas merci pour votre aide

  2. #2
    Invité
    Invité(e)
    Par défaut
    BOnjour,


    N.B. La balise <font> est OBSOLETE.

    Il vaut mieux remplacer par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <span style="font-family:'...';">...</span>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php
    $str = '[TEXTE POLICE=Times New roman]hello[/TEXTE]';
    echo preg_replace('#\[TEXTE POLICE=([^\]]*)\](.*)\[/TEXTE\]#Usi', '<span style="font-family:\'$1\';">$2</span>', $str);

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 71
    Par défaut
    Merci beaucoup
    Je test le code des que possible

  4. #4
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 994
    Par défaut
    Ce qui ne va pas c'est ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $texte = preg_replace($aRegExp[$j],$aTag[$j],$contenuP);
    Car à chaque tour de ta boucle for tu repars avec le contenu original $contenuP. Pour que ça marche, tu dois faire $texte = $contenuP; avant la boucle puis changer ta ligne en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $texte = preg_replace($aRegExp[$j], $aTag[$j], $texte);
    Tes patterns sont correctes mais ton approche l'est moins à mon avis. Principalement parce que tu présupposes que les balises bbcode de ta source sont correctement fermées et qu'il n'y a pas de balises orphelines --> c'est le meilleur moyen de produire un code html non valide.

    Les patterns données dans le lien montrent l'idée principale qui consiste à mettre dans la même pattern et la balise ouvrante et le contenu, et la balise fermante en capturant au passage les attributs de la balise et le contenu entre la balise ouvrante et fermante. Ces patterns restent néanmoins naïves et risquent de se casser les dents sur les passages avec des balises imbriquées, enchevêtrées, ou encore des balises nécessitant un traitement spécial (comme des balises [ code ] à l'intérieur desquelles le bbcode ne doit pas être transformé). Bref, c'est loin d'être simple, mais ça permet de s'y frotter.

    Pour ce qui est des balises <FONT> c'est vrai que de nos jours ça pique les yeux, surtout écrites en majuscule. Ce n'est pas pour autant une erreur si tu choisis de produire du HTML4. On peut tout à fait produire du code valide avec une ancienne version de html dés lors qu'on le déclare via la dtd et qu'on respecte sa syntaxe. Mais bon, HTML4 date quand même de 1998 et ça fait bientôt une bonne quinzaine d'années que les développeurs le délaissent au profit de xhtml 1.0 et HTML5.

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 71
    Par défaut
    Bonjour;
    Merci pour vos réflexions constructives
    En fait j'adapte en php des expressions régulières JavaScript
    Le traitement doit se faire en php pour eviter des balises HTML dan la base de donnée
    C'est donc effectivement un vieux script
    Mais je vais le mettre au HTML 5 vous avez raison et utiliser du CSS
    Merci pour votre aide

  6. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 71
    Par défaut Re probleme d"'expression reguliere
    Bonjour ,
    J'ai un probleme d'expression régulière 2 h que j'y suis
    Mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    '#\[IMAGE id=\"https|http\:([a-zA-Z0-9/.-_]*)\" src=\"https|http\:([a-zA-Z0-9/.-_]*)\"\]#';
    pour traiter ce type de lien [IMAGE id="https://www.bergerac.fr/wp-content/uploads/2017/08/solidarite.jpg" src="https://www.bergerac.fr/wp-content/uploads/2017/08/solidarite.jpg"] pour le remplacer par ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $aTag[13]="<img id=\"$1\" src=\"$1\">";
    Merci pour votre aide

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

Discussions similaires

  1. probleme expressions régulieres
    Par Ganondorf dans le forum Langage
    Réponses: 12
    Dernier message: 14/10/2007, 21h57
  2. Probleme expression réguliere
    Par aikinhdo dans le forum Langage
    Réponses: 5
    Dernier message: 06/04/2007, 20h01
  3. Probleme expression réguliere
    Par tarti dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 05/02/2007, 15h31
  4. probleme expression réguliere
    Par guiillaume63 dans le forum Langage
    Réponses: 1
    Dernier message: 28/06/2006, 15h45
  5. Probleme avec expression réguliere
    Par Raideman dans le forum Langage
    Réponses: 3
    Dernier message: 22/06/2006, 14h56

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