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 :

Ajouter une condition pour le preg_replace [RegEx]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 134
    Par défaut Ajouter une condition pour le preg_replace
    Bonjour.

    Dans un système de news, j'ai un bout de code qui permet de remplacer les url http://www.google.fr par <a href="http://www.google.fr" class="url">http://www.google.fr</a> au moment de les insérer dans la BDD

    Voici le bout de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php
    $contenu = preg_replace('#http://.[a-zA-Z0-9%_?!\-\/.]+#', '<a href="$0" class="url">$0</a>', $contenu);
    ?>
    Je peux être amené à modifier les news.
    Le problème c'est que les liens déjà traités vont l'être encore.

    Ce qui va donner :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="<a href="http://www.google.fr" class="url">http://www.google.fr</a>" class="url"><a href="http://www.google.fr" class="url">http://www.google.fr</a></a>
    Pour éviter ça il faut que j'ai une condition, mais je ne vois pas comment l'appliquer. :/

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 144
    Par défaut
    Vérifie que l'URL n'est pas entourée de guillemets avec des lookbehind/lookahead (http://www.regular-expressions.info/lookaround.html) :

    (?<!")...(?!")

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 134
    Par défaut
    Au risque de paraitre pour un idiot, le lien parle de cette technique pour Perl 5 et non PHP. A moins que j'ai mal lu. :p

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 144
    Par défaut
    PCRE = Perl-Compatible Regular Expression (Library)

    Les fonctions preg_ appartiennent à la bibliothèque du même nom :
    http://www.php.net/manual/fr/book.pcre.php

  5. #5
    Membre Expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut
    Tu peux tenter un truc comme ça (non testé)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php
    $contenu = preg_replace('#(?<!href=")http://.[a-zA-Z0-9%_?!\-\/.]+#', '<a href="$0" class="url">$0</a>', $contenu);
    ?>

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 134
    Par défaut
    Merci pour vos réponses :

    asdf007 : Je n'ai pas vraiment eu le temps de m'intéresser à ta proposition ça sera fait d'ici demain.

    s.n.a.f.u : Bien essayé, mais ça ne fonctionne pas. :p

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

Discussions similaires

  1. Ajouter une condition pour la commande net use dans un batch
    Par killahpriest dans le forum Administration
    Réponses: 0
    Dernier message: 23/10/2014, 16h05
  2. [Drupal] Comment ajouter une condition presave pour un type de contenu?
    Par maxwel56 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 26/04/2012, 18h25
  3. Ajouter une librairie pour php sur un Serveur dédié
    Par tchoumak dans le forum Applications et environnements graphiques
    Réponses: 1
    Dernier message: 28/06/2006, 22h22
  4. [File][JFileChooser]Ajouter une extension pour "Save as
    Par leminipouce dans le forum AWT/Swing
    Réponses: 10
    Dernier message: 27/01/2006, 15h45
  5. Ajouter une clé pour une session non ouverte
    Par prgasp77 dans le forum Windows
    Réponses: 4
    Dernier message: 29/10/2005, 00h26

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