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 :

faire une sorte de BBcode


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 213
    Par défaut faire une sorte de BBcode
    Amis du soir, bonsoir,

    Je préviens, je suis une bille en expression régulière, mais je me soigne !-)

    Voila, je cherche à faire une règle qui me permettrait de remplacer
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <span class="form">langage utilisé : php</span>
    J'ai cherché ici et la, mais je n'ai rien trouvé sur la récupération de variable via les expression régulière.
    En fait sans vouloir être exigent, plus que la solution, je cherche surtout l'explication pour comprendre ce qui pour le moement me dépasse....

    Merci d'avance.

  2. #2
    Membre averti
    Inscrit en
    Juin 2006
    Messages
    56
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Juin 2006
    Messages : 56
    Par défaut
    Voici un élément de réponse...

    Première solution,
    Tu fais du remplacement tout simplement par le contenu de ta balise lang
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $strin = '[code lang="php"]';
    echo preg_replace('`\[code +lang="([a-zA-Z#+]+)"\]`','<span class="form">langage utilisé : \\2</span>',$strin);
    Traduction on cherche les chaines commçant par "[code" suivi de au moin 1 espace puis la chaine de caractère "lang="" puis une suite de caractère contenant toutes les lettres de l'alphabet et/ou le caractère # et/ou +(pour les langages tel c# ou c++) et on les remplacent par la chaine que tu veux mettre. Le \\2 ira ici chercher le contenu de la 2ème parenthèse capturante.

    Deuxième solution,
    Pareil mais en utilisant une fonction de callback via pre_replace_callback, mais pour le code je te laisse un peu chercher..

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 213
    Par défaut
    Merci Quantux pour ces explications,
    Je venais de trouver une formule que j'ai adapté :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    // mail
       $regMailSimple="\[email\] ?([^\[]*) ?\[/email\]";
       $regMailEtendu="\[email ?=([^\[]*) ?] ?([^]]*) ?\[/email\]";
       if (ereg($regMailSimple, $t)) $t=ereg_replace($regMailSimple, "<a href=\"mailto:\\1\">\\1</a>", $t);
       else $t=ereg_replace($regMailEtendu, "<a href=\"mailto:\\1\">\\2</a>", $t);
    Mais j'avoue que tes explications sont claires et m'aident beaucoup.
    Merci encore et @+

  4. #4
    Membre averti
    Inscrit en
    Juin 2006
    Messages
    56
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Juin 2006
    Messages : 56
    Par défaut
    Petites choses à savoir avec les expressions régulières en php:
    toute la serie des fonctions ereg_*, oublie, se sont des vielles fonctions, elles sont trop lentes
    utilise les preg_* (4fois plus rapide)
    Avec les preg_*, il faut délimiter ton masque :
    je m'explique,
    avec ereg_* tu ecrivait '[a-z]+'
    avec preg_* tu ecrira '`[a-z]+`'

    je te conseille le caractère ` pour delimiter ton masque, carctère peu utilisé (AltGr+7)

    tu peux aussi placer des caractère d'option après le masque, par exemple insensible à la casse :
    '`[a-z]+`i'

    Quelques liens :
    - http://expreg.com/
    - http://fr.php.net/manual/fr/referenc...ern.syntax.php

    A oui aussi pour ton pb, pense plutôt fonction callback, c'est mieux

Discussions similaires

  1. [mySQL5] Faire une sorte de "boucle" dans une requête
    Par mdr_cedrick dans le forum Requêtes
    Réponses: 5
    Dernier message: 01/07/2009, 17h40
  2. [Tableaux] faire une sorte de requete COUNT() dans un array
    Par mdr_cedrick dans le forum Langage
    Réponses: 4
    Dernier message: 01/04/2008, 11h49
  3. [SQL 2005]faire une sorte d'historique
    Par NicoNGRI dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 28/01/2008, 22h54
  4. [SQL 2000] faire une sorte de pivot
    Par zooffy dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 13/11/2007, 09h53
  5. Petite question sur la façon de faire une sorte de thread
    Par bit_o dans le forum GTK+ avec C & C++
    Réponses: 5
    Dernier message: 09/05/2007, 23h28

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