$name = 'Canon OEM BC-30e BK';
 preg_match("/OEM (\\w+)/", $name, $matches);
 $hash = $matches[1];

Comment puis-je obtenir que $hash renvoie « BC-30e » dans cet exemple ? En ce moment, il renvoie 'BC-'. Je suis un peu novice dans l'apprentissage des expressions régulières et j'ai du mal à obtenir le résultat escompté. Je suis allé sur http://regexr.com/ en essayant de le résoudre pendant une minute et je trouve ceci résultat difficile. =(

À ma connaissance, le « w » en fait un mot, ce qui exclut les tirets. Cependant, lorsque je le remplace par quelque chose comme ci-dessous, j'obtiens simplement « B ».

 $name = 'Canon OEM BC-30e BK';
 preg_match("/OEM ([A-Za-z-])/", $name, $matches);
 $hash = $matches[1];

Quelqu'un peut-il m'éclairer sur ce que je fais mal ici ? je serais très reconnaissant =)

0
ihateartists 25 juin 2016 à 19:33

2 réponses

Meilleure réponse

Vous pouvez trouver des caractères autres que des espaces :

/OEM ([\\S]+)/
2
splash58 25 juin 2016 à 19:41

Il vous suffit de faire correspondre plusieurs caractères et d'ajouter des chiffres dans votre dernière expression régulière :

preg_match("/OEM ([A-Za-z0-9-]+)/", $name, $matches);
1
Thomas B Preusser 25 juin 2016 à 19:51