Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
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 25/05/2011, 12h40   #1
Futur Membre du Club
 
Femme
Développeur Web
Inscription : avril 2009
Messages : 50
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : avril 2009
Messages : 50
Points : 18
Points : 18
Par défaut Abréviation nom de ville

Bonjour,

Je me tourne vers vous car je cherche depuis un petit moment à résoudre un problème tout bête...

J'ai un script qui va chercher des informations sur une ville dans ma bdd. Cependant avant d'aller chercher les informations je dois mettre en forme le nom de la ville : un exemple pour mieux comprendre

Code php :
1
2
3
4
5
6
7
 
//Le nom de la ville (invention pour bien illustrer le problème)
$p = 'SAINT KERSAINT SAINTE PLABENNEC SAINTS';
//On remplace les SAINT, SAINTE et SAINTS par ST, STE et ST
$p2= str_ireplace("saint ","ST ",$p);  
$p2= str_ireplace("sainte ","STE ",$p2);
$p2= str_ireplace("saints ","ST ",$p2);

Le problème c'est que je récupère : ST KERST STE PLABENNEC SAINTS
au lieu de : ST KERSAINT STE PLABENNEC ST

Je suppose qu'il faut utiliser une expression régulière pour lui faire comprendre qu'il ne faut traiter uniquement que les SAINT/E/S qui sont isolés ou bien en début ou fin de chaîne...
titinesaku est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2011, 13h07   #2
Expert Confirmé
 
Avatar de Séb.
 
Inscription : mars 2005
Messages : 2 823
Détails du profil
Informations personnelles :
Âge : 34
Localisation : France

Informations professionnelles :
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2005
Messages : 2 823
Points : 3 449
Points : 3 449
En poussant au bout la petite astuce que tu as déjà utilisée :

Code :
1
2
3
4
5
6
$p = 'SAINT KERSAINT SAINTE PLABENNEC';
$p = ' ' . $p ; // Pour isoler le "SAINT" initial
$p2= str_ireplace(" saint "," ST ",$p); // On ne remplace que les "saint" isolés
$p2= str_ireplace(" sainte "," STE ",$p2); // ...
$p2= str_ireplace(" saints "," ST ",$p2); 
$p2 = substr($p2, 1) ; // Suppression du " " initial
__________________
Un problème exposé clairement est déjà à moitié résolu
Keep It Smart and Simple
Séb. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2011, 13h57   #3
Futur Membre du Club
 
Femme
Développeur Web
Inscription : avril 2009
Messages : 50
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : avril 2009
Messages : 50
Points : 18
Points : 18
Ça ne marche pas j'obtiens toujours
SAINT KERSAINT SAINTE PLABENNEC SAINTS => ST KERST STE PLABENNEC SAINTS

Merci quand même Je poursuis mes recherches du côté des expressions régulières en attendant
titinesaku est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2011, 14h00   #4
Expert Confirmé
 
Avatar de Séb.
 
Inscription : mars 2005
Messages : 2 823
Détails du profil
Informations personnelles :
Âge : 34
Localisation : France

Informations professionnelles :
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2005
Messages : 2 823
Points : 3 449
Points : 3 449
Je viens de tester ceci :

Code :
1
2
3
4
5
6
$p = 'SAINT KERSAINT SAINTE PLABENNEC';
$p = ' ' . $p ; // Pour isoler le "SAINT" initial
$p2= str_ireplace(" saint "," ST ",$p); // On ne remplace que les "saint" isolés
$p2= str_ireplace(" sainte "," STE ",$p2); // ...
$p2= str_ireplace(" saints "," ST ",$p2); 
$p2 = substr($p2, 1) ; // Suppression du " " initial
Et cela me donne :

Code :
ST KERSAINT STE PLABENNEC
N'est-ce pas ce que tu voulais ?

Ceci :

Code :
SAINT KERSAINT SAINTE PLABENNEC SAINTS
Donne cela :

Code :
ST KERSAINT STE PLABENNEC SAINTS
__________________
Un problème exposé clairement est déjà à moitié résolu
Keep It Smart and Simple
Séb. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2011, 14h34   #5
Futur Membre du Club
 
Femme
Développeur Web
Inscription : avril 2009
Messages : 50
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : avril 2009
Messages : 50
Points : 18
Points : 18
Oui ça marche désolé, j'ai changé le nom de la ville en ajoutant un saint à la fin pour tester. En suivant ta logique il faudrait mettre un espace à la fin et ensuite l'enlever, je suppose que ça marche. Au final ce n'est peut être pas aussi propre qu'avec une expression régulière ?
titinesaku est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 25/05/2011, 14h36   #6
Expert Confirmé
 
Avatar de Séb.
 
Inscription : mars 2005
Messages : 2 823
Détails du profil
Informations personnelles :
Âge : 34
Localisation : France

Informations professionnelles :
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2005
Messages : 2 823
Points : 3 449
Points : 3 449
Citation:
Au final ce n'est peut être pas aussi propre qu'avec une expression régulière ?
Perso je les réserve à des tâches plus complexes
__________________
Un problème exposé clairement est déjà à moitié résolu
Keep It Smart and Simple
Séb. est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 25/05/2011, 14h37   #7
Futur Membre du Club
 
Femme
Développeur Web
Inscription : avril 2009
Messages : 50
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : avril 2009
Messages : 50
Points : 18
Points : 18
Ok, donc on peut considérer que ceci est correct alors
Code php :
1
2
3
4
5
6
7
8
 
$p = 'SAINT KERSAINT SAINTE PLABENNEC SAINTE';
$p = ' '.$p.' '; // Pour isoler le "SAINT" initial et final
$p2= str_ireplace(" saint "," ST ",$p); // On ne remplace que les "saint" isolés
$p2= str_ireplace(" sainte "," STE ",$p2); // ...
$p2= str_ireplace(" saints "," ST ",$p2); 
$p2 = substr($p2, 1) ; // Suppression du " " initial
$p2 = substr($p2, 0, -1); // Suppression du " " final



Edit : Au cas où, voici la solution avec une expression régulière
Code php :
1
2
3
4
5
 
$ville = 'SAINT KERSAINT SAINTE PLABENNEC SAINTS';
$ville= preg_replace('#\b(SAINT)\b#i','ST',$ville);
$ville = preg_replace('#\b(SAINTE)\b#i','STE',$ville);
$ville = preg_replace('#\b(SAINTS)\b#i','ST',$ville);


Merci de ton aide
titinesaku est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h29.


 
 
 
 
Partenaires

Hébergement Web