Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1177 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Expression régulière pour un preg_split

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Expression régulière pour un preg_split

n°1911397
jay-jay69
Posté le 03-08-2009 à 19:30:12  profilanswer
 

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 !!

mood
Publicité
Posté le 03-08-2009 à 19:30:12  profilanswer
 

n°1911406
jay-jay69
Posté le 03-08-2009 à 19:45:19  profilanswer
 

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 ?

n°1911420
pataluc
Posté le 03-08-2009 à 21:01:09  profilanswer
 

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
n°1911435
jay-jay69
Posté le 03-08-2009 à 22:16:35  profilanswer
 

pas bête... :)

n°1911436
jay-jay69
Posté le 03-08-2009 à 22:17:01  profilanswer
 

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
n°1911489
jay-jay69
Posté le 04-08-2009 à 09:37:13  profilanswer
 

up ?

n°1911497
Pascal le ​nain
Posté le 04-08-2009 à 09:46:27  profilanswer
 

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
n°1911499
jay-jay69
Posté le 04-08-2009 à 09:49:51  profilanswer
 

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 !

n°1911510
Pascal le ​nain
Posté le 04-08-2009 à 10:09:16  profilanswer
 

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
n°1911517
jay-jay69
Posté le 04-08-2009 à 10:16:58  profilanswer
 

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
mood
Publicité
Posté le 04-08-2009 à 10:16:58  profilanswer
 

n°1911532
jay-jay69
Posté le 04-08-2009 à 10:37:06  profilanswer
 

ç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
n°1911536
Pascal le ​nain
Posté le 04-08-2009 à 10:42:12  profilanswer
 

Pourquoi faire les # ?

n°1911543
jay-jay69
Posté le 04-08-2009 à 10:47:17  profilanswer
 

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

n°1911545
Pascal le ​nain
Posté le 04-08-2009 à 10:51:34  profilanswer
 

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...

n°1911555
pataluc
Posté le 04-08-2009 à 11:11:59  profilanswer
 

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
n°1911562
jay-jay69
Posté le 04-08-2009 à 11:18:55  profilanswer
 

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

n°1911566
Pascal le ​nain
Posté le 04-08-2009 à 11:28:54  profilanswer
 

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

n°1911567
jay-jay69
Posté le 04-08-2009 à 11:30:51  profilanswer
 

faire des str_replace ?

n°1911581
Pascal le ​nain
Posté le 04-08-2009 à 12:15:56  profilanswer
 

jay-jay69 a écrit :

faire des str_replace ?


 
 [:cerveau +1]

n°1911599
rufo
Pas me confondre avec Lycos!
Posté le 04-08-2009 à 13:11:32  profilanswer
 

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

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Expression régulière pour un preg_split

 

Sujets relatifs
expression reguliere : recuperer lien internetexpression reguliére supp balise
preg_match, trouver la dernière occurence avant telle chaine[preg_replace] ne remplace pas les occurences sur une même ligne
Par défaut d'un format de message en pseudo BNF à une expression regu[Résolu][Expression Régulière] Besoin d'aide
Split bloqué à cause d'un caractère inconnu. 
Plus de sujets relatifs à : Expression régulière pour un preg_split


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR