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 :

[RegExp] Les mots finissant par un !


Sujet :

Langage PHP

  1. #1
    Membre expert
    Avatar de Alexandre T
    Homme Profil pro
    Chef de projets AMO
    Inscrit en
    Mai 2002
    Messages
    1 213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets AMO
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 213
    Points : 3 001
    Points
    3 001
    Par défaut [RegExp] Les mots finissant par un !
    Je veux remplacer [skill=Toto:654][/skil:654] par un texte qui est créé par la fonction gw_skills_bbcode.

    Pour cela j'utilise la fonction preg_replace_callback

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $text = preg_replace_callback("/\[skill=(([A-z]+)):$uid\]/si", "gw_skills_bbcode", $text);
    $text = str_replace("[/skill:$uid]", $bbcode_tpl['skill_close'], $text);
    Cela marche très bien.

    Mais certains mots possèdent un point d'exclamation à la fin comme par exemple :
    [skill=Tutu!:654][/skil:654]

    Je débute en expression régulière. Et là je sèche. J'ai cherché des documentations, mais pas moyen...
    J'ai testé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "/\[skill=([A-z]+)!?:$uid\]/si"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "/\[skill=([A-z]+)\!?:$uid\]/si"
    Mais rien ca ne marche pas.

    Je ne trouve pas mon erreur... une idée ?

  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

    Non, je ne vois pas vraiment pourquoi !? ne fonctionne pas comme tu l'attends. C'est ce que j'aurais fait également...
    Cela dit, j'ai deux interrogations concernant ton expression actuelle : pourquoi as-tu mis [A-z] au lieu de l'habituel [a-z] ? Je sais bien qu'il y a le modificateur i mais tout de même, n'est-ce pas tangeant ? Note que si ça fonctionne, tant mieux.
    Deuxièmement, pourquoi deux couples de parenthèses ? Je ne pense pas que cela empêche l'expression de fonctionner mais je ne vois pas ce que cela apporte.

    Note que je ne suis pas très expert en regexp non plus, je m'interroge seulement.

    As-tu essayé avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $text = preg_replace_callback("/\[skill=([a-z!]+):$uid\]/si", "gw_skills_bbcode", $text);
    $text = str_replace("[/skill:$uid]", $bbcode_tpl['skill_close'], $text);
    $text = trim($text, '!');
    (ou en échappant le point d'exclamation si ça ne fonctionne pas) ?

Discussions similaires

  1. [WD-2010] Insertion Tabulation après les mots commençant par GEN
    Par nadir-1961 dans le forum Word
    Réponses: 2
    Dernier message: 21/05/2012, 18h47
  2. vider toutes les tables finissant par "_blabla"
    Par isma92 dans le forum Requêtes
    Réponses: 1
    Dernier message: 20/01/2009, 15h24
  3. mot finissant par R
    Par Prekestolen dans le forum Formules
    Réponses: 1
    Dernier message: 03/12/2008, 09h49
  4. Récupérer un par un les mots d'une cellule
    Par netgui dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 02/04/2008, 11h36

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