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 avec guillemets local VS prod [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 21
    Points : 17
    Points
    17
    Par défaut Regex avec guillemets local VS prod
    Bonjour,

    Ca fait quelques heures que je m'arrache les cheveux sur une regex pour récupérer et modifier des liens "mailto".

    Mon but est de remplacer tous mes liens mailto pour éviter les spams pour les rétablir en javascript lors d'un click. C'est juste le contexte, le problème n'est pas fondamentalement sur ce principe.

    Tous mes tests de regex fonctionnent en "local", mais pas en prod. Les deux serveurs sont sous Debian 6 avec PHP 5.3, il y a surement quelques différences au niveau de la config et le problème doit venir de là mais je n'arrive pas à trouver quelle option est en cause.

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $html = $trad->texte;
    $pattern = '`\<a[^>]href=["]mailto:([^">]*?)["][^>]*\>(.*?)\</a\>`uism';
    $replace = '<a href="mailto:a.\1b" class="testContact">Contact</a>';
    $html = preg_replace($pattern,$replace,$html);
    echo stripslashes($html);
    Explication : Je veux ajouter une class à mes liens de type mailto et remplacer le contenu par "contact" au cas où le mail s'y trouve.

    J'ai essayé un paquet de truc et les regex ont tendance à vite me mettre sur les nerfs, alors quand elles marchent que d'un côté et pas de l'autre...

    Mes tests ont l'air de mettre la faute sur les guillemets, un soucis avec une option PHP en particulier ? Magic quote ?

    Toute aide sera la bienvenue, vous sauverez une vie parce que là je vais me tirer une balle, si j'arrive à mettre la main sur mon flingue...

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    c'est DOMDocument pour parser du HTML

    et ne jamais utiliser ` comme délimiteur pour les regex

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 21
    Points : 17
    Points
    17
    Par défaut
    Merci pour cette réponse !

    Hum... Je ne vois pas bien comment le DOMDocument pourrait m'être utile dans le cas présent... Après je ne connais absolument, mais ça m'a pas trop l'air de pouvoir répondre à mon besoin. Mais si c'est le cas, merci de m'éclairer.

    De toute façon, une regex devrait marcher, elle fonctionne en local !

    Pour les délimiteurs, j'en ai essayé plusieurs et ça ne change pas grand chose :/.

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par Lianodel Voir le message
    Hum... Je ne vois pas bien comment le DOMDocument pourrait m'être utile dans le cas présent... Après je ne connais absolument, mais ça m'a pas trop l'air de pouvoir répondre à mon besoin. Mais si c'est le cas, merci de m'éclairer.
    c'est un parseur de DOM donc de HTML, c'est la api qu'en Javascript sur un navigateur (getElementBysTagName)


    Citation Envoyé par Lianodel Voir le message
    Pour les délimiteurs, j'en ai essayé plusieurs et ça ne change pas grand chose :/.
    le ` est l'opérateur d'exécution pour PHP

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_match(`rm *`, $str);

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 21
    Points : 17
    Points
    17
    Par défaut
    Hum... Je n'ai pas vraiment le temps de me lancer dans l'apprentissage de DOMDocument alors qu'une regex fonctionne... Je te remercie de te pencher sur mon problème mais j'aimerais savoir d'où vient le soucis sur la regex et la corriger, pas passer par un autre outil qui risque de me prendre autant de temps à comprendre et mettre en place.

    C'est comme si j'avais un problème avec ma voiture et que mon garagiste m'en vendait une nouvelle .

    Encore une fois, je te remercie de ta participation mais j'aimerais, si possible essayer de résoudre le problème à la source. Sinon, je verrais avec DOMDocument en dernier recours mais bon, ça ne m'emballe pas des masses.

    Ok pour le ` .

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 21
    Points : 17
    Points
    17
    Par défaut
    Bon bah j'ai trouvé. Comme quoi il faut savoir faire des pauses et après on peut réfléchir.

    Les données était "addslashées" dans ma BDD et donc normal qu'il ne trouvait pas ce qu'il fallait. Un stripslashes avant et c'est réglé !

    Erreur de noob .

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

Discussions similaires

  1. [RegEx] Regex avec guillemets ET apostrophes
    Par elcoyotos dans le forum Langage
    Réponses: 3
    Dernier message: 16/12/2011, 18h22
  2. [MySQL] sql et texte avec guillemets
    Par licorne dans le forum PHP & Base de données
    Réponses: 21
    Dernier message: 24/12/2005, 21h49
  3. Réponses: 1
    Dernier message: 03/12/2005, 16h17
  4. Problème de Regex ... avec un point
    Par bugalood dans le forum Langage
    Réponses: 2
    Dernier message: 29/05/2005, 10h26
  5. Probleme avec guillemets dans commande HREF
    Par angelevil dans le forum ASP
    Réponses: 4
    Dernier message: 02/05/2005, 19h06

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