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 :

les "+" et le "-" [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 26
    Points : 21
    Points
    21
    Par défaut les "+" et le "-"
    bonjour

    J'ai une commande qui n'autorise que les chifre, les letres et le caractaires "._#/". la voici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $nav = eregi_replace('[^a-z0-9._#/]', '', $_GET['nav']);
    J'aimerais qu'elle laisse aussi passer les signe "+" et "-".

    Comment faire ?

  2. #2
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    je dirai qu'il suffit que tu rajoutes les deux nouveaux caractères dans ton pattern non?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $nav = eregi_replace('[^a-z0-9._#/+-]', '', $_GET['nav']);

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 26
    Points : 21
    Points
    21
    Par défaut
    ben oui, c'est ce que j'ai pensé aussi... sauf que non, ça ne marche pas !!!
    (enfin pour le "-" si mais pas pour le "+")

  4. #4
    Membre éclairé
    Inscrit en
    Septembre 2006
    Messages
    685
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 685
    Points : 658
    Points
    658
    Par défaut
    Un + dans une url correspond à un espace.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 26
    Points : 21
    Points
    21
    Par défaut
    Citation Envoyé par Xunil
    Un + dans une url correspond à un espace.
    Hum?

  6. #6
    Membre éclairé
    Inscrit en
    Septembre 2006
    Messages
    685
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 685
    Points : 658
    Points
    658
    Par défaut
    Pourquoi hum ?

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 26
    Points : 21
    Points
    21
    Par défaut
    Je n'ai pas compris le sens de ta réponse !

  8. #8
    Membre éclairé
    Inscrit en
    Septembre 2006
    Messages
    685
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 685
    Points : 658
    Points
    658
    Par défaut
    Quand tu as des + dans une valeur GET d'une url le + est un espace.

    Dans http://www.site.org?nav=10+20

    Un echo de $_GET['nav'] donnera "10 20" et pas "10+20"

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 26
    Points : 21
    Points
    21
    Par défaut
    Arg !!!
    Plus de la boitier des fichiers que je doit traiter on un signe "+".

    Ya une astuce ? Des apostrophe ? simple ? double ?

  10. #10
    Membre éclairé
    Inscrit en
    Septembre 2006
    Messages
    685
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 685
    Points : 658
    Points
    658
    Par défaut
    Un urlencode avant de passer ta valeur en GET devrait faire l'affaire.

    Un urldecode pour la récupérer ensuite.

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 26
    Points : 21
    Points
    21
    Par défaut
    vue... je vais cresser aussi par là...

    question subsidiaire :
    comment isolerais tu la chaine qi se trouve entre la chaine "nav=" et le premier "&" suivant (s'il y en a un) dans cette chaine la :
    "...&nav=niv+1.dwg&co=..."

  12. #12
    Membre éclairé
    Inscrit en
    Septembre 2006
    Messages
    685
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 685
    Points : 658
    Points
    658
    Par défaut
    Je dirais avec une regex
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    preg_match('#(?=<nav=)[^&]+#', $chaine, $f);
    echo $f[0];

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 26
    Points : 21
    Points
    21
    Par défaut
    si mon url est :
    http://localhost/trans_plan/?nav=AFF1

    ce code :
    preg_match('#(?=<nav=)[^&]+#', $_SERVER['QUERY_STRING'], $f);
    $nav=$f[0];

    me retourne l'erreur :
    Notice: Undefined offset: 0 in ...\requette.php on line 13

  14. #14
    Membre éclairé
    Inscrit en
    Septembre 2006
    Messages
    685
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 685
    Points : 658
    Points
    658
    Par défaut
    Ah oui, j'ai inversé le < et le =

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_match('#(?<=nav=)[^&]+#', $_SERVER['QUERY_STRING'], $f);

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 26
    Points : 21
    Points
    21
    Par défaut
    Je n'aurais que deux mot pour décrire l'aide que tu m'as apporter :
    GE NIAL l

    Merci pour ta patience !
    Maintenant ca marche !

    Bonne soirée (moi je vais mieu dormir !)

    LEIôPAR

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

Discussions similaires

  1. QGIS : lenteur pour afficher les listes des vues dans &quot;Ajouter une table PostGIS&quot;
    Par fafa63 dans le forum SIG : Système d'information Géographique
    Réponses: 2
    Dernier message: 11/07/2014, 19h04
  2. [MySQL] Supprimer les erreurs de syntaxe dues aux quotes
    Par gotenks dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 25/01/2006, 16h10

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