Rechercher et sélectionner un terme dans une chaine

ArnaudP3333x33 -  
 ArnaudP3333x33 -
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) :

$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
';

1 réponse

  1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    Bonjour,

    en utilisant .preg-match et une REGEX.

    https://www.php.net/manual/fr/function.preg-match.php

    La regex doit être un truc du genre :
    filename=\"(\w*.*)"

    Exemple : https://regex101.com/r/fL9iI2/1

    1
    1. ArnaudP3333x33
       
      Merci pour ta réponse, je vais me documenter un peu plus avec
      J'ai effectivement trouvé mon bonheur en ce sens avec
      preg_match('#filename="(.+)"#i', $body, $output);
      echo $output[1];


      A quoi sert le w dans ta regex ?
      0