IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Suppression de caractères [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre averti
    Inscrit en
    Avril 2013
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Avril 2013
    Messages : 43
    Par défaut Suppression de caractères
    Bonjour à vous,

    Je vous explique mon soucis :
    Je dois parcourir ma BDD afin d'en récupérer les adresses pour que celles-ci puissent être géocoder en coordonnées GPS.
    Cependant certaines adresses ne passent pas, exemple ici en rouge : LYON CEDEX 09

    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    <?php
     
    include("connectionBDD.php");
     
    connexionBDD();
     
    $sql = 'SELECT * FROM 'TABLE' WHERE Ismap = 1';
    $req = mysql_query($sql) or die('Erreur SQL!<br />'.$sql.'<br />'.mysql_error());
    $lat = 'NULL';
    $lng = 'NULL';
     
    while ($data = mysql_fetch_array($req)) { 
     
    	if ($data['Pays'] == "FRANCE METROPOLE"){ // Pour ne pas mettre FRANCE METROPOLE dans la reqûete car cela pose problème
    		$adresseBrut = urlencode($data['Adresse']." ".$data['Adresse2']." ".$data['CodePostal']." ".$data['Ville']);
    	}else{
    		$adresseBrut = urlencode($data['Adresse']." ".$data['Adresse2']." ".$data['CodePostal']." ".$data['Ville']." ".$data['Pays']);
    	}
     
    	$url = "http://maps.googleapis.com/maps/api/geocode/json?address=".$adresseBrut."&sensor=false";
     
    $ch = curl_init(utf8_encode($url));
       	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
      	 $result = curl_exec($ch);
       	$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
       	curl_close($ch);
       	if ($httpCode == 200) {
         	$geocode = json_decode($result);
          	$lat = $geocode->results[0]->geometry->location->lat;
          	$lng = $geocode->results[0]->geometry->location->lng; 
          	$formatted_address = $geocode->results[0]->formatted_address;
          	//$geo_status = $geocode->status;	
          	//$location_type = $geocode->results[0]->geometry->location_type;
     
       	}else{
         		$geo_status = "HTTP_FAIL_$httpCode";
       	}
     
            echo "Latitude : ".$lat." & longitude : ".$lng." ! ";
    	echo $url;
    }
     
    ?>
    Il faudrais donc que pour ".$data['Ville']" je puisse interdire CEDEX et tout ce qui peut apparaitre ensuite ( ou simplement les chiffres ).

    Any idea, please ?

    Merci à vous.

  2. #2
    Membre éclairé Avatar de EIN-LESER
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 703
    Par défaut
    Regex je dirais de prime abord car je suppose que tu ne peut toucher a la structure de la base de données.

  3. #3
    Membre chevronné Avatar de humitake
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2010
    Messages
    399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2010
    Messages : 399
    Par défaut
    Bonjour,

    Et pourquoi ne pas faire l'interdiction en SQL ? C'est à dire ne pas récupérer les villes qui contiennent CEDEX.

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM TABLE WHERE Ismap = 1 AND ville NOT LIKE '%CEDEX%';

  4. #4
    Membre averti
    Inscrit en
    Avril 2013
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Avril 2013
    Messages : 43
    Par défaut
    Merci pour vos réponses,

    Tout d'abord pour le regex, si j'ai bien compris sa sers a rechercher uniquement ? ( désolé je débute )

    Et concernant l'interdiction en SQL, cela ne fera pas apparaître les villes qui comportent "CEDEX" non ?
    Alors que je veux les faire apparaître mais sans le "CEDEX"

  5. #5
    Membre chevronné Avatar de humitake
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2010
    Messages
    399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2010
    Messages : 399
    Par défaut
    Citation Envoyé par Prodiguy Voir le message
    Tout d'abord pour le regex, si j'ai bien compris sa sers a rechercher uniquement ? ( désolé je débute )
    Oui les regex te permettent de faire des recherches sur une expression et après tu peux, par exemple, en demander la suppression.

    Citation Envoyé par Prodiguy Voir le message
    Et concernant l'interdiction en SQL, cela ne fera pas apparaître les villes qui comportent "CEDEX" non ?
    Alors que je veux les faire apparaître mais sans le "CEDEX"
    Ah d'accord.
    Donc si je comprends bien si une ville contient CEDEX tu souhaite supprimer tout ce qui est à partir de ce dernier, par exemple pour LYON CEDEX 09 tu souhaite garder juste LYON.
    Dans ce cas en utilisant les expressions régulière et preg_replace() :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $str_test = "LYON CEDEX 09";
    echo $str_test . "<br />";
    echo preg_replace('/CEDEX.*/', '', $str_test);
    L'expression régulière ci-dessus supprime tout ce qui l'y a dans une chaine à partir de CEDEX et tout ce qui suis.

  6. #6
    Membre averti
    Inscrit en
    Avril 2013
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Avril 2013
    Messages : 43
    Par défaut
    Merci de ton intérêt humitake,

    J'ai testé ta commande sur un autre code, il marche nickel !
    Cependant je n'arrive pas à l'adapter à mon code ..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    while ($data = mysql_fetch_array($req)) { 
     
    	$NewVille = preg_replace('/CEDEX.*/', '', $data['Ville']);
    	if ($data['Pays'] == "FRANCE METROPOLE"){ 
    		$adresseBrut = urlencode($data['Adresse']." ".$data['Adresse2']." ".$data['CodePostal']." ".$Newville);
    	}else{
    		$adresseBrut = urlencode($data['Adresse']." ".$data['Adresse2']." ".$data['CodePostal']." ".$NewVille." ".$data['Pays']);
    	}
    Je l'utilise / le place sûrement mal dans mon code ...

  7. #7
    Membre chevronné Avatar de humitake
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2010
    Messages
    399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2010
    Messages : 399
    Par défaut
    Je ne vois pas ou est le problème.

    Tu as un message d'erreur ?

    Peux tu afficher le résultat de var_dump($NewVille) ? Et accessoirement faire la même chose pour $adresseBrut.

  8. #8
    Membre averti
    Inscrit en
    Avril 2013
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Avril 2013
    Messages : 43
    Par défaut
    Voici mon message d'erreur ( qui est le même pour le var_dump ($adresseBrut) :
    "Notice: Undefined variable: Newville in /var/www/pretestcurl.php on line 17"

    Et voici le résultat renvoyé par var_dump ($NewVille)(je n'ai pas tout mis il y a énormément de lignes) :
    string(13) "LYON Cedex 09" string(8)

    (Donc je viens de remarquer qu'il faudrait aussi que je filtre les "Cedex" ( Sans maj ))

  9. #9
    Membre chevronné Avatar de humitake
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2010
    Messages
    399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2010
    Messages : 399
    Par défaut
    Citation Envoyé par Prodiguy Voir le message
    Voici mon message d'erreur ( qui est le même pour le var_dump ($adresseBrut) :
    "Notice: Undefined variable: Newville in /var/www/pretestcurl.php on line 17"
    Ah oui, il faut une majuscule à ville, ici :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if ($data['Pays'] == "FRANCE METROPOLE"){ 
    		$adresseBrut = urlencode($data['Adresse']." ".$data['Adresse2']." ".$data['CodePostal']." ".$Newville);
    	}

    Citation Envoyé par Prodiguy Voir le message
    Et voici le résultat renvoyé par var_dump ($NewVille)(je n'ai pas tout mis il y a énormément de lignes) :
    string(13) "LYON Cedex 09" string(8)

    (Donc je viens de remarquer qu'il faudrait aussi que je filtre les "Cedex" ( Sans maj ))
    Utilise la fonction strtoupper() pour passer ta chaîne en majuscule

  10. #10
    Membre averti
    Inscrit en
    Avril 2013
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Avril 2013
    Messages : 43
    Par défaut
    Arf l'erreur bête

    Voilà le résultat ( du moins un exemple ) de ce que donne un var_dump($adresseBrut) :
    "...+LYON+CEDEX+09"

    La fonction strtoupper marche très bien, mais mon fameux "CEDEX*" est toujours là.

    Pour infos voici mon code maintenant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    while ($data = mysql_fetch_array($req)) { 
     
    	$NewVille = preg_replace('/CEDEX.*/', '', $data['Ville']);
    	if ($data['Pays'] == "FRANCE METROPOLE"){ // Pour ne pas mettre FRANCE METROPOLE dans la reqûete car cela pose problème
    		$adresseBrut = urlencode($data['Adresse']." ".$data['Adresse2']." ".$data['CodePostal']." ".strtoupper($NewVille));
    	}else{
    		$adresseBrut = urlencode($data['Adresse']." ".$data['Adresse2']." ".$data['CodePostal']." ".strtoupper($NewVille)." ".$data['Pays']);
    	}

    EDIT :
    Après avoir écrit ma variable comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $NewVille = preg_replace('/CEDEX.*/', '', strtoupper($data['Ville']));
    Mes "CEDEX*"ont Enfin disparu ! Sa à l'air de marcher, merci beaucoup pour ton aide et ta patience ! Je met en résolu.

  11. #11
    Membre chevronné Avatar de humitake
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2010
    Messages
    399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2010
    Messages : 399
    Par défaut
    Oui c'est effectivement pour la recherche qu'il fallait utiliser la méthode

    Ainsi tu est sur que toutes tes villes seront écrite en majuscule, y compris le CEDEX, et donc que ta regex sera toujours valide.

    Du coup tu peux le supprimer de $adresseBrut, à moins que tu ne souhaite avoir forcément le nom de la ville en majuscule.

    Je t'invite à regarder la fonction ucfirst() si tu souhaite ne mettre que le premier caractère de la ville en majuscule dans ta sortie

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. suppression dernier caractère d'un ArrayList avec le clavier
    Par barbiche dans le forum Interfaces Graphiques en Java
    Réponses: 3
    Dernier message: 26/03/2007, 13h04
  2. Suppression de caractères dans un fichier
    Par kimlee dans le forum Administration système
    Réponses: 2
    Dernier message: 12/10/2006, 10h42
  3. Réponses: 4
    Dernier message: 10/10/2006, 11h14
  4. Suppression de caractères spéciaux
    Par nellynew dans le forum Access
    Réponses: 3
    Dernier message: 18/09/2006, 11h14
  5. Suppression de caractères
    Par Galaad dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 17/08/2006, 12h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo