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 :

preg_replace chiffre exact [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre averti
    Inscrit en
    Décembre 2003
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 44
    Par défaut preg_replace chiffre exact
    Bonjour,

    je souhaite remplacer un chiffre dans une chaine de caractère plus précisement dans le href d'une url.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $pattern_old='/(id=150)[^0-9]/';
     
    $pattern_new='id=151';
    Sachant que je peux avoir des urls du type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    id=150 => BON
    id=150&toto=toto  => BON
     
    ou 
     
    id=1507&toto=toto = > PAS BON 
    id=1507  => PAS BON
     
     
     
    $data["lContent"]		=	preg_replace($pattern_old,$pattern_new,$node["lContent"]);

    Mon code actuel me renvoie
    id=151amp;toto=toto le &est supprimé.


    Comment faire pour rechercher une chaine exacte svp?


    merci

  2. #2
    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
    enleves le ^

  3. #3
    Membre averti
    Inscrit en
    Décembre 2003
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 44
    Par défaut
    Bin non justement car si j'enleve le [^0-9] le 1507 sera pris en compte.

  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
    tu veux remplacer id=1507 par id=151 ?

    EDIT : si c'est le contraire c'est : /id=150(?![0-9])/

  5. #5
    Membre averti
    Inscrit en
    Décembre 2003
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 44
    Par défaut
    Na je veux que uniquement 150 pas 150succedé de d'autres chiffres soit remplacé.

    si j'ai 1501 le replace ne doit pas se faire.
    si' j'ai 150poet le replace doit se faire

  6. #6
    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
    Citation Envoyé par kitana Voir le message
    Na je veux que uniquement 150 pas 150succedé de d'autres chiffres soit remplacé.

    si j'ai 1501 le replace ne doit pas se faire.
    si' j'ai 150poet le replace doit se faire
    j'ai éditer le message, c'est le BON, PAS BON qui ma perturber

  7. #7
    Membre averti
    Inscrit en
    Décembre 2003
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 44
    Par défaut
    ok en cherchant sur le net,
    je n'ai pas vu un cas ou on replacait un mot exact dans une chaine.

    exemple si je recherche dans une phrase constitution et que cette phrase contient anticonstitutionnellement, le remplacement ne devrait pas se faire car ce n'est pas un mot autnome

  8. #8
    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
    Citation Envoyé par kitana Voir le message
    ok en cherchant sur le net,
    je n'ai pas vu un cas ou on replacait un mot exact dans une chaine.

    exemple si je recherche dans une phrase constitution et que cette phrase contient anticonstitutionnellement, le remplacement ne devrait pas se faire car ce n'est pas un mot autnome
    pour un mot exacte on utilise \b
    \bconstitution\b


    pour l'autre truc c'est bon avec /id=150(?![0-9])/ ?

  9. #9
    Membre averti
    Inscrit en
    Décembre 2003
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 44
    Par défaut
    ouuuuuuuuuuuuiiiiiiiiiiiiiiiiiiiiiiiii!!!


    mais c'est une syntaxe pour les replaces ou c'est parce qu'il faut mettre les () autour de la negation?

  10. #10
    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
    Citation Envoyé par kitana Voir le message
    ouuuuuuuuuuuuiiiiiiiiiiiiiiiiiiiiiiiii!!!


    mais c'est une syntaxe pour les replaces ou c'est parce qu'il faut mettre les () autour de la negation?
    non c'est pas un syntax spécial, c'est juste ca se se fait comme ca les négation

  11. #11
    Membre averti
    Inscrit en
    Décembre 2003
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 44
    Par défaut
    Ok je pensais que [^0-9] suffisait .

    Merci en tout cas !

  12. #12
    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
    Citation Envoyé par kitana Voir le message
    Ok je pensais que [^0-9] suffisait .

    Merci en tout cas !

    id=150[^0-9] : id=150 + tout sauf d'un chiffre entre 0 et 9
    id=150(?![0-9]) : id=150 qui n'est pas suivis d'un chiffre entre 0 et 9

    quand tu fais le premier il est inclus dans le résultat contrairement au second

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

Discussions similaires

  1. [RegEx] preg_replace tous les chiffres entre [ et ]
    Par Akim13 dans le forum Langage
    Réponses: 1
    Dernier message: 06/01/2014, 09h12
  2. Jeu chiffres exact
    Par mouna2 dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 12/05/2008, 10h17
  3. [RegEx] Problème preg_replace mot exact
    Par nonoco dans le forum Langage
    Réponses: 4
    Dernier message: 24/02/2008, 19h57
  4. Recherche programme qui convertit les chiffres arabes en nb
    Par oli57 dans le forum Algorithmes et structures de données
    Réponses: 5
    Dernier message: 15/06/2002, 03h11
  5. C'est quoi exactement un générateur d'états
    Par Henry Cesbron Lavau dans le forum Outils de restitution et d'analyse
    Réponses: 0
    Dernier message: 02/04/2002, 19h15

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