Expression régulière pour un preg_split

Expression régulière pour un preg_split - PHP - Programmation

Marsh Posté le 03-08-2009 à 19:30:12    

Hello tout le monde,
 
Je cherche à éclater une chaine de caractère dans un array suivant plusieurs critères : ";", retour chariot, espace etc...
 
La fonction explode ne marche que pour un critère donc je dois utiliser preg_split et les expressions régulières...
 
Par contre, je ne trouve pas les expression régulières pour :
- ";"
- retour chariot
- ","
- espace
 
Pouvez-vous m'aider ?
 
Merci !!

Reply

Marsh Posté le 03-08-2009 à 19:30:12   

Reply

Marsh Posté le 03-08-2009 à 19:45:19    

En fait, pour être précis, j'ai un textarea dans lequel des clients vont saisir des adresses mails a la chaine, et je voudrais éviter le maximum de probleme...
 
Genre si un mec sépare par un ";", l'autre par espace etc...
 
Vous voyez le truc ?

Reply

Marsh Posté le 03-08-2009 à 21:01:09    

le plus simple ca serait pas de définir le séparateur que tu veux utiliser, par exemple "retour chariot", et de remplacer tous les autres trucs ";", " " et "," par des "retours chariot" ensuite tout de la même manière?


Message édité par pataluc le 03-08-2009 à 21:01:57
Reply

Marsh Posté le 03-08-2009 à 22:16:35    

pas bête... :)

Reply

Marsh Posté le 03-08-2009 à 22:17:01    

c'est quoi le séparateur ideal ? retour chariot ?
 
c'est le "CHR(13)" ?
 
merci de ton aide !!


Message édité par jay-jay69 le 03-08-2009 à 22:19:10
Reply

Marsh Posté le 04-08-2009 à 09:37:13    

up ?

Reply

Marsh Posté le 04-08-2009 à 09:46:27    

Le retour chariot est inutile et n'est pas utilisé dans un textarea (plus d'utilisation en fait... ca servait au temps des vieilles imprimantes)
Il te faut matcher les sauts de ligne "\n".


Message édité par Pascal le nain le 04-08-2009 à 10:04:17
Reply

Marsh Posté le 04-08-2009 à 09:49:51    

ok...merci pour ton aide...
 
par contre, j'ai un souci quand l'utilisateur fait plusieurs \n dans le textarea, ou plusieurs ";" etc... pas facile de gérer tous les cas !

Reply

Marsh Posté le 04-08-2009 à 10:09:16    

Je te propose une autre approche.
Si c'est que des adresses mails, tu peux utiliser ereg() en passant en paramètre supplémentaire un tableau pour stocker le résultat.
Tu te fais une petite expression régulière correspondant à une adresse email standard.
Moi j'utilise celle-ci :
 

^[a-zA-Z.0-9_-]+@[a-zA-Z0-9_-]+[.][a-z]{1,4}$


Message édité par Pascal le nain le 04-08-2009 à 10:12:55
Reply

Marsh Posté le 04-08-2009 à 10:16:58    

oui, ce ne sont que des adresses mails...
 
donc si je fais :
 

Code :
  1. ereg('#^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,6}$#',$adresses,$arr_adresses);


 
il va éclater ma chaine $adresses (ce qui a été saisi dans le textarea), suivant le pattern dans $arr_adresses, c'est ça ?
 
et si le mec met n'importe quoi entre, il va quand réussir à extraire l'info ?


Message édité par jay-jay69 le 04-08-2009 à 10:25:24
Reply

Marsh Posté le 04-08-2009 à 10:16:58   

Reply

Marsh Posté le 04-08-2009 à 10:37:06    

ça a l'air de fonctionner lorsqu'il n'y a qu'une seule adresse de saisie... :(


Message édité par jay-jay69 le 04-08-2009 à 10:46:12
Reply

Marsh Posté le 04-08-2009 à 10:42:12    

Pourquoi faire les # ?

Reply

Marsh Posté le 04-08-2009 à 10:47:17    

j'essayais avec un autre pattern...
 
mais mon tableau arr_adresses reste désespérément vide...

Reply

Marsh Posté le 04-08-2009 à 10:51:34    

Chez moi ca fonctionne partiellement.
 
Avec [a-zA-Z.0-9_-]+@[a-zA-Z0-9_-]+[.][a-z]{1,4} Ca me donne la première adresse email.
 
Il ne faut pas les ^ ni $ car la chaine ne s'arrête pas.
 
Le problème, c'est que je veux toutes les adresses, pas seulement la première...

Reply

Marsh Posté le 04-08-2009 à 11:11:59    

Pascal le nain a écrit :

Chez moi ca fonctionne partiellement.

 

Avec [a-zA-Z.0-9_-]+@[a-zA-Z0-9_-]+[.][a-z]{1,4} Ca me donne la première adresse email.

 

Il ne faut pas les ^ ni $ car la chaine ne s'arrête pas.

 

Le problème, c'est que je veux toutes les adresses, pas seulement la première...

 


sauf erreur de ma part, ton truc il fonctionne pas avec des adresses mail avec sous domaines, genre nom.prenom@filiale.entreprise.com

 

de plus il matche pas tous les TLD: http://en.wikipedia.org/wiki/List_ [...] el_domains genre .museum ou .travel. bon d'accord c'est jamais utilisé, mais bon...


Message édité par pataluc le 04-08-2009 à 11:12:13
Reply

Marsh Posté le 04-08-2009 à 11:18:55    

du coup, je me pose la question : est-ce possible de parser un textarea et de récupérer les mails qui vont bien ??

Reply

Marsh Posté le 04-08-2009 à 11:28:54    

Oui, c'est possible, mais peut etre pas avec des expressions régulères.
 
Ta première solution était bonne.

Reply

Marsh Posté le 04-08-2009 à 11:30:51    

faire des str_replace ?

Reply

Marsh Posté le 04-08-2009 à 12:15:56    

jay-jay69 a écrit :

faire des str_replace ?


 
 [:cerveau +1]

Reply

Marsh Posté le 04-08-2009 à 13:11:32    

un bon outil graphique pour tester ses expreg : http://gskinner.com/RegExr/


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed