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 :

Sélectionner un terme dans une chaîne - php [PHP 5.3]


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Architecte matériel
    Inscrit en
    Décembre 2015
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte matériel
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2015
    Messages : 30
    Points : 21
    Points
    21
    Par défaut Sélectionner un terme dans une chaîne - php
    Bonjour à tous,
    voilà quelques heures que je tente de faire marcher mon script en vain...
    Dans une chaine qui est le contenu d'un corps d'email, je cherche à récupérer le nom du fichier en pièce jointe qui dans l'exemple s'appel "mes canditatures.txt"

    Il est devant filename=" mais je bute avec le name=" en dessous pour encadrer qui est reconnu en même temps.

    Ce doit être gérable j'imagine, mais je suis un peu novice, si quelqu'un pouvait m'aider, se serait terrible

    Voici la chaine que je reçois dans une variable ($body) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    $body = '
    --Apple-Mail=_380D7683-C2AA-4F13-8B31-93C43592D154
    Content-Transfer-Encoding: 7bit
    Content-Type: text/plain;
    	charset=us-ascii
     
    Cordialement.
     
    Non prenom
     
    --Apple-Mail=_380D7683-C2AA-4F13-8B31-93C43592D154
    Content-Disposition: attachment;
    	filename="mes candidatures.txt"
    Content-Type: text/plain;
    	name="mes candidatures.txt"
    Content-Transfer-Encoding: quoted-printable
     
    ici la piece jointe en texte B64
    ';

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    avec une expression rationnelle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    preg_match('#filename="(.+)"#Usi', $body, $output);
    echo $output[1];
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre à l'essai
    Homme Profil pro
    Architecte matériel
    Inscrit en
    Décembre 2015
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte matériel
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2015
    Messages : 30
    Points : 21
    Points
    21
    Par défaut
    Une tuerie !!
    j'en rigole tellement mon script était long comparé à ta réponse et en plus ça marche !!
    Merci beaucoup !!

  4. #4
    Membre à l'essai
    Homme Profil pro
    Architecte matériel
    Inscrit en
    Décembre 2015
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte matériel
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2015
    Messages : 30
    Points : 21
    Points
    21
    Par défaut
    Juste pour terminer,
    Pourrais tu me préciser ce que veut dire les #Usi ?
    Dois je chercher vers les Regex pour avoir des informations ?

    Merci.

  5. #5
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 858
    Points : 6 556
    Points
    6 556
    Par défaut
    #Usi sont le délimiteur de pattern # (que tu retrouves au début) et les trois autres caractères sont des modificateurs:
    • i rend la pattern insensible à la casse.
    • s permet au point de représenter également un saut de ligne (par défaut ce n'est pas le cas)
    • U inverse le sens des quantificateurs, les quantificateurs gourmands deviennent non-gourmands, les non-gourmands deviennent gourmands.


    En fait, mis à part éventuellement i (au cas où filename pourrait être FILENAME) , aucun des ces modificateurs n'est utile.

    s n'a pas lieu d'être puisque le nom du fichier ne contiendra pas de saut de ligne, et U ne sert à rien d'une manière générale (autant utiliser le bon quantificateur directement).

    Tu obtiendras le même résultat avec #filename="(.*?)"#i.
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  6. #6
    Membre à l'essai
    Homme Profil pro
    Architecte matériel
    Inscrit en
    Décembre 2015
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte matériel
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2015
    Messages : 30
    Points : 21
    Points
    21
    Par défaut
    Je vais tester ça, merci pour ta réponse

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

Discussions similaires

  1. [PHP 5.3] [PHP-CLI] Interprêter code PHP dans une chaîne
    Par houpli dans le forum Langage
    Réponses: 3
    Dernier message: 17/10/2012, 00h41
  2. Réponses: 10
    Dernier message: 20/02/2009, 15h47
  3. Réponses: 1
    Dernier message: 16/05/2007, 12h51
  4. Réponses: 1
    Dernier message: 30/11/2006, 17h49
  5. [Système] Exécuter un bloc PHP dans une chaîne
    Par ideal dans le forum Langage
    Réponses: 7
    Dernier message: 30/08/2006, 16h15

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