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 :

Problème de fonction preg_replace [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre habitué Avatar de alexmorel
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    196
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2003
    Messages : 196
    Points : 157
    Points
    157
    Par défaut Problème de fonction preg_replace
    Bonjours,


    J'ai un problème avec la fonction preg_replace

    remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <a href="http://www.google.ch" TARGET="_blank">Google</a>
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    [#url=http://www.google.ch]Google[#url]
    avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $texte=preg_replace('`(\<a\s+href="(.*?)"([^\'"]*)\s+>(.*?)</a>)`i', '<a href="http://$1" target="_blank">$2</a> ', $texte);
    Mais je ne vois pas la faute là ?

    Merci d'avance

  2. #2
    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 777
    Points
    17 777
    Par défaut
    Votre expression régulière ne correspond pas au lien donné en exemple. En effet, l'attribut supplémentaire TARGET ne matche pas cette partie de l'expression : ([^\'"]*) à cause de sa valeur (délimitée par les doubles-quotes). S'orienter plutôt vers ([^>]) ?

    Je remarque également l'échapement du caractère < qui n'est pas utile.


    Julp.

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    792
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 792
    Points : 1 206
    Points
    1 206
    Par défaut
    Tu as déjà posté sur le sujet il me semble.
    http://www.developpez.net/forums/sho...d.php?t=214430

    Mais tu as déformé la solution donnée.

    Ceci est une variante. Solution:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #<img\s+src=(?:"|\')([^\'"]*)(?:"|\')[^>]*>#i
    Avec la capture en $1 (les deux autres parenthèses sont non capturantes)

  4. #4
    Membre habitué Avatar de alexmorel
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    196
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2003
    Messages : 196
    Points : 157
    Points
    157
    Par défaut
    Merci julp

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $texte=preg_replace('`(\<a\s+href="(.*?)"([^>]*>)(.*?)</a>)`i', '[#url=$2]$4[/#url] ', $texte);
    C'étais ça !

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

Discussions similaires

  1. problème avec fonction strtotime & preg_replace
    Par rin01 dans le forum Langage
    Réponses: 4
    Dernier message: 24/11/2012, 09h39
  2. [RegEx] problème sur la fonction preg_replace pour formatage
    Par medkyl dans le forum Langage
    Réponses: 4
    Dernier message: 06/02/2008, 17h37
  3. Problème fonction preg_replace
    Par alexmorel dans le forum Langage
    Réponses: 2
    Dernier message: 25/09/2006, 08h03
  4. Problème avec fonction d'envoie de mail
    Par zyg dans le forum Réseau/Web
    Réponses: 1
    Dernier message: 23/02/2005, 08h48
  5. [Requête] Problème avec fonction "DATE_FORMAT()"
    Par sekiryou dans le forum Requêtes
    Réponses: 4
    Dernier message: 11/01/2005, 21h52

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