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 :

Exclusion de chaines


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Inscrit en
    Mars 2005
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 46
    Points : 59
    Points
    59
    Par défaut Exclusion de chaines
    Bonjour,

    J'ai besoin de remplacer tous les liens d'une page, par des éléments paramétrés.
    Je ne doit prendre en compte que les liens du site (pas de "mailto", pas de liens externes et pas les ancres)

    Actuellement, j'en suis là :
    $sPage = eregi_replace("href=\"([^(http)(mailto)(#)])", "href=\"index.php?Action=".cstActGoPage."&Page=".$sSousRep."\\1", $sPage);

    $sPage=> contient le code HTML de la page source.

    Visiblement, le pattern "href=\"([^(http)(mailto)(#)])" exclus touts les caractères (et non pas les chaines) contenu dans les chaines que je souhaite supprimer.

    Pour résumer, je souhaite que mon remplacement s'applique sur les chaines :
    href="...

    Et exclu les chaines :
    href=\"#...
    href=\"http...
    href=\"mailto...

  2. #2
    Membre habitué Avatar de daniel61
    Inscrit en
    Décembre 2006
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 139
    Points : 169
    Points
    169
    Par défaut
    POSIX ne permet pas les assertions, par contre PCRE oui. les fonctions preg_* ne sont pas tellement plus compliquées, mais beaucoup plus puissantes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $sPage=preg_replace("/\shref=\"(?!http|mailto|#)([^\"]+)\"/isU", "href=\"index.php?Action=".$cstActGoPage."&Page=".$sSousRep."\\1", $sPage);
    (?!http|mailto|#) veut dire pas de http ou mailto ou #
    ([^\"]+) veut dire 1 ou plusieurs caractères qui ne sont pas "

Discussions similaires

  1. [RegEx] Exclusion d'une chaine dans une expression
    Par firejocker dans le forum Langage
    Réponses: 7
    Dernier message: 10/03/2010, 23h20
  2. [RegEx] Mot interdit, exclusion d'une chaine de caractères
    Par Finnegans dans le forum Langage
    Réponses: 36
    Dernier message: 28/09/2009, 14h36
  3. [RegEx] Exclusion d'une chaine de caractères
    Par omageus dans le forum Langage
    Réponses: 3
    Dernier message: 31/07/2009, 15h39
  4. Expression rationnelle : exclusion d'une chaine (assertion ?)
    Par maxxiweb dans le forum Langages de programmation
    Réponses: 1
    Dernier message: 20/02/2009, 07h40
  5. [RegEx] Regex exclusion chaine
    Par doogy dans le forum Langage
    Réponses: 6
    Dernier message: 24/11/2008, 15h45

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