Expression réguliere - preg_match_all

arh
Invité n'ayant pas de compte PHPfrance

19 oct. 2011, 22:18

Salut à tous,
J'ai besoin d'une petite aide.
Je veux extraire les mots "Jony", "Smith" et "[email protected]" de cette ligne:
text^name1^Jony~text^secondname1^Smith~text^email1^[email protected]~
J'ai fait comme ça: preg_match_all ('/\^(.*?)\~/', $row['form'], $res);

Et j'obtiens ça pour le prénom: ^name1^Jony~
pour le nom: ^secondname1^Smith~
etc.

Il n'y a que le mot "text" qui disparait. Pourriez-vous me dire ce qui ne vas pas dans mon expression régulière?

Merci beaucoup

Eléphanteau du PHP | 44 Messages

20 oct. 2011, 06:36

Sachant que les éléments à extraire se situe entre ^ et ~, ton expression devrait donc être de la forme

Code : Tout sélectionner

#([^\^]+)~#
Ou encore avec une assertion positive

Code : Tout sélectionner

#[^\^]+(?=~)#