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 :

regex par block [RegEx]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Avatar de sourcilpower
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2011
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2011
    Messages : 128
    Billets dans le blog
    2
    Par défaut regex par block
    bonjour,

    imaginon que j'ai un texte composer de trois paragraphe

    [codehtml]blablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablabla[/codehtml]

    [codejs]lollollollollollollollollollollollollollollollollollollollollollollollollollollollollollollollol[/codejs]

    [codephp]mdrmdrmdrmdrmdrmdrmdrmdrmdrmdrmdrmdrmdrmdrmdrmdrmdrmdrmdrmdrmdrmdrmdrmdrmdrmdrmdrmdrmdrmdrmdrmdr[/codephp]

    et que le texte entre les balise [codehtml] execute ceci :
    $texte = preg_replace('#\[lol\](.+)\[/lol\]#isU', '<strong>$1</strong>', $texte);
    et que le texte entre les balise [codejs] execute ceci :
    $texte = preg_replace('#\[lol\](.+)\[/lol\]#isU', '<em>$1</em>', $texte);
    et que le texte entre les balise [codephp] execute ceci :
    $texte = preg_replace('#\[lol\](.+)\[/lol\]#isU', '<u>$1</u>', $texte);

  2. #2
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Hello.

    D'accord, si tu le dis.

    C'est quoi la question ? Dans mon pays on termine les phrases interrogatives par un point d'interrogation.

  3. #3
    Membre très actif
    Avatar de sourcilpower
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2011
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2011
    Messages : 128
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Benjamin Delespierre Voir le message
    Hello.

    D'accord, si tu le dis.

    C'est quoi la question ? Dans mon pays on termine les phrases interrogatives par un point d'interrogation.
    La question est comment puis-je faire ? svp

  4. #4
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Avec ce que tu nous as donné comme information on ne peut pas te dire comment faire: tu ne nous décrit pas ce que tu veux faire.

    et que le texte entre les balise [codehtml] execute ceci : ...
    N'est pas un explication valide.
    C'est comme si je disait: "Voiture, bannane ! Comment faire ?"

    Je pense que tu voulais dire "Je souhaite encapsuler des portions de texte entre des balises à l'aide d'expression régulières." Je me trompe ?

  5. #5
    Membre très actif
    Avatar de sourcilpower
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2011
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2011
    Messages : 128
    Billets dans le blog
    2
    Par défaut re
    Citation Envoyé par Benjamin Delespierre Voir le message
    Avec ce que tu nous as donné comme information on ne peut pas te dire comment faire: tu ne nous décrit pas ce que tu veux faire.


    N'est pas un explication valide.
    C'est comme si je disait: "Voiture, bannane ! Comment faire ?"

    Je pense que tu voulais dire "Je souhaite encapsuler des portions de texte entre des balises à l'aide d'expression régulières." Je me trompe ?
    je vais m'exprimer plus clairement avec un exemple :

    voici mon texte :

    Je suis un gros [lol][bb]nul[/bb], et pourtant j'ai [ii]tout appris[/ii][/lol][mdr] les [bb]banane[/bb] que c'est bon les [ii]banane[/ii] j'adore[/mdr].

    et j'aimerais que le texte entre les balise [lol][/lol] :
    - on remplace les balise [bb][/bb] par <strong></strong>
    - on remplace les balise [ii][/ii] par <em></em>

    et j'aimerais que le texte entre les balise [mdr][/mdr] :
    - on remplace les balise [bb][/bb] par <em></em>
    - on remplace les balise [ii][/ii] par <strong></strong>

    ... Merci d'avance

  6. #6
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Ah d'accord, tu veux faire ton propre bbcode en fait.

    C'est relativement simple à faire, s'il ne s'agit que de "traduire" les balises bb par des balises XHTML.
    On va pour ça se servir d'un tableau associatif qui nous fournira cette traduction:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $bb_tags = array(
    'a' => 'em',
    'b' => 'strong',
    'c' => 'center'
    );
    On va ensuite se servir de ce tableau pour faire les traductions qui vont bien:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    // On construit les patterns de remplacement
    $bb_patterns = array_map(function ($item) { return "#\[$item\](.*)\[/$item\]#im"; }, array_keys($bb_tags));
    var_dump($bb_patterns);
     
    $bb_replace = array_map(function ($item) { return "<$item>$1</$item>"; }, array_values($bb_tags));
    var_dump($bb_replace);
    Les var_dump nous servent à voir que nos patterns de traduction sont corrects:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    array
      0 => string '#\[a\](.*)\[/a\]#im' (length=19)
      1 => string '#\[b\](.*)\[/b\]#im' (length=19)
      2 => string '#\[c\](.*)\[/c\]#im' (length=19)
     
    array
      0 => string '<em>$1</em>' (length=11)
      1 => string '<strong>$1</strong>' (length=19)
      2 => string '<center>$1</center>' (length=19)
    ensuite, y'a plus qu'a appliquer tout ça sur une chaine:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $text = <<<TXT
    [a]hello[/a] worldTXT;
    
    var_dump(preg_replace($bb_patterns, $bb_replace, $text));
    Et voilà le résultat:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    string '<center><em>hello</em> <strong>world</strong></center>' (length=54)
    C'est tout bête

  7. #7
    Membre émérite Avatar de micetf
    Homme Profil pro
    Professeur des Ecoles
    Inscrit en
    Mai 2009
    Messages
    557
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Professeur des Ecoles
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2009
    Messages : 557
    Par défaut
    Pourquoi avoir ouvert un nouveau post ?
    N'est-ce pas la suite de celui-ci ?

    Un texte qui exécute du code php ?
    Il me semble que cela mérite clarification.

    Fred

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

Discussions similaires

  1. Regex : remplacer une regex par une variable
    Par Julipp dans le forum Général Python
    Réponses: 5
    Dernier message: 07/04/2013, 15h03
  2. Décrypter RIJNDAEL_128 par block
    Par cid007300 dans le forum Langage
    Réponses: 1
    Dernier message: 20/02/2013, 17h43
  3. [RegEx] supprimer <a href...</a> par regex dans pages html.
    Par moldak dans le forum Langage
    Réponses: 10
    Dernier message: 15/11/2012, 16h02
  4. [SP-2010] Affichage des colonnes par block
    Par bdptaki dans le forum SharePoint
    Réponses: 3
    Dernier message: 24/10/2011, 15h47
  5. regex par block
    Par sourcilpower dans le forum Langage
    Réponses: 30
    Dernier message: 01/03/2011, 23h51

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