Précédent   Forum des professionnels en informatique > PHP > Langage > Fonctions
Fonctions Forum d'entraide sur les fonctions PHP. Avant de poster -> FAQ fonctions et Sources diverses
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 30/03/2011, 15h11   #1
Membre confirmé
 
Avatar de renaud26
 
Inscription : mars 2003
Messages : 1 043
Détails du profil
Informations personnelles :
Âge : 48
Localisation : France, Puy de Dôme (Auvergne)

Informations forums :
Inscription : mars 2003
Messages : 1 043
Points : 285
Points : 285
Par défaut Explode et expression régulière

Bonjour à tous,

Depuis une BDD, j'extrais une ligne d'adresse dont je dois séparer le code postal de la ville. Je ne connais pas les données, ni leur format. La seule chose dont je sois sûr c'est qu'il y a un espace entre le code et la ville.

Donc la base serait :

Code :
1
2
3
4
 
$part = explode(" ", $str);
$code_post = $part[0];
$ville = $part[1];
Mais ça ne va fonctionner que sur des exemples comme :
75000 Paris

Là, on va coincer :
85400 St Gilles Croix de Vie

Le code postal n'est pas forcément numérique :
F-95652 Montréal

J'ai essayé de bidouillé un truc avec preg_match_all, sans succès.
Vous auriez une idée pour que ça matche à tous les coups ?
D'avance merci.
renaud26 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/03/2011, 16h28   #2
Membre confirmé
 
Avatar de renaud26
 
Inscription : mars 2003
Messages : 1 043
Détails du profil
Informations personnelles :
Âge : 48
Localisation : France, Puy de Dôme (Auvergne)

Informations forums :
Inscription : mars 2003
Messages : 1 043
Points : 285
Points : 285
Une soluce avec du scotch et de la ficelle :

Code :
1
2
3
4
5
6
7
8
9
10
 
$part = preg_split('/ /', $str, -1);
$nb = count($part);
 
$code_postal = $part[0];
$ville = "";
for($i=1;$i<$nb;$i++){
$ville .= $part[$i]. " ";
}
$ville = substr($ville, 0, -1); //virer l'espace de fin
Mais si quelqu'un a quelque chose de plus ergonomique, je suis preneur...
renaud26 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/03/2011, 16h39   #3
Membre Expert
 
Avatar de transgohan
 
Homme Baptiste ROUSSEL
Étudiant
Inscription : janvier 2011
Messages : 802
Détails du profil
Informations personnelles :
Nom : Homme Baptiste ROUSSEL
Localisation : France, Territoire de Belfort (Franche Comté)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2011
Messages : 802
Points : 1 515
Points : 1 515
Si ceci te paraît plus propre, libre à toi de l'utiliser :
Code :
1
2
3
4
$part = explode(' ', $str);
$code_post = $part[0];
unset($part[0]);
$ville = implode(' ',$part);
transgohan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/03/2011, 17h01   #4
Membre confirmé
 
Avatar de renaud26
 
Inscription : mars 2003
Messages : 1 043
Détails du profil
Informations personnelles :
Âge : 48
Localisation : France, Puy de Dôme (Auvergne)

Informations forums :
Inscription : mars 2003
Messages : 1 043
Points : 285
Points : 285
Salut et merci : oui, c'est plus clean, je trouve...et plus court !
renaud26 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h33.


 
 
 
 
Partenaires

Hébergement Web