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 :

Expression reguliére sur href [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre éclairé Avatar de Shandler
    Profil pro
    Inscrit en
    Février 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 514
    Par défaut Expression reguliére sur href
    Bonjour,

    Voila mon probléme, j'ai du texte provenant d'un bdd qui contient des lien et je voudrais pouvoir ajouter un paramètre a c'est lien.

    Exemple

    Ce que j'ai en bdd : mon texte bllalblbb <a href="monlien.html">mon premier lien</a> blouifdf ouuidfd <a href="http://monlien.html">mon second lien</a> fgfgfgfgfgfg
    Ce que je voudrai après la regex : mon texte bllalblbb <a href="monlien.html?param=1">mon premier lien</a> blouifdf ouuidfd <a href="http://monlien.html?param=2">mon second lien</a> fgfgfgfgfgfg
    Sachant que parfois dans l'url il peut y a voir un target blank et que si le href est vide ou contient un # il faut pas rajouter le paramétre.

    Moi j'ai trouvé cette expression mais elle fait le contraire de ce que je veux.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $string = '<a href="test.html">sdsdsd</a>';
    $pattern = '`<a href=["\'#]?([^"\'#>]+)["\'#]?>`';
    $replacement = '${1}?param=1';
    echo preg_replace($pattern, $replacement, $string);
    Si vous avez une idée merci a vous.

  2. #2
    Membre Expert
    Avatar de Nesmontou
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Septembre 2004
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 612
    Par défaut
    Bonjour,

    Tu peux essayer ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
    $subject = 'texte <a href="monlien.html">mon premier lien</a> texte <a href="#test">mon second lien</a> texte';
    $pattern = '/href="([^#]+)"/ismU';
    $replacement = 'href="$1?param=1"';
     
    echo preg_replace($pattern, $replacement, $subject);
    ?>
    Bon développement

  3. #3
    Membre éclairé Avatar de Shandler
    Profil pro
    Inscrit en
    Février 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 514
    Par défaut
    Merci beaucoup ca marche nickel.

  4. #4
    Expert confirmé

    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
    Par défaut
    arf... encore des regex la ou y'en a pas besoin, output_add_rewrite_var est la pour ça

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 12/12/2007, 09h59
  2. [RegEx] Aide sur une expression regulière
    Par zulkifli dans le forum Langage
    Réponses: 1
    Dernier message: 13/03/2007, 15h02
  3. Expression regulière sur les dates
    Par Konrad Florczak dans le forum Langage
    Réponses: 23
    Dernier message: 05/10/2006, 17h49
  4. [Tableaux] expression regulière dynamique sur "(" et "["
    Par epeichette dans le forum Langage
    Réponses: 2
    Dernier message: 28/09/2006, 23h42
  5. [Installation]SQL Server 2005 Express Edition sur XP home
    Par Médiat dans le forum MS SQL Server
    Réponses: 15
    Dernier message: 06/08/2005, 18h22

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