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 :

Comment puis-je extraire une chaine de caracteres


Sujet :

Langage PHP

  1. #1
    Débutant  
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 098
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 098
    Points : 946
    Points
    946
    Par défaut Comment puis-je extraire une chaine de caracteres
    Bonjour à tous,

    J'ai cette chaine de caractere
    [[51.727028157048,-1.6314697265625],[51.289405902717,-1.9940185546875],[51.203441743081,-0.9832763671875],[51.727028157048,-1.6314697265625]]
    et je souhaiterais avoir
    51.727028157048,-1.6314697265625
    ou éventuellement
    [51.727028157048,-1.6314697265625]
    Le truc c'est que je ne vois pas comment arriver à mes fins

    J'ai pensé utilisés explode() avec comme délimiteur, la virgule, mais il ne doit prend en compte que les virgules qui sont précédés par ] et suivit de [, pas les autres.
    J'ai aussi pensé d'utilisé comme délimiteur, les crochets, mais là ca me semblait plus cimpliqué.

    Ce que j'ai aussi pensé faire, c'est de supprimé les deux premiers [[ et uen fois arrivé au premier ], de tout arreter.

    L'idéal serait d'avoir dans un array ceci
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $arr = new array(
    0 => "51.727028157048,-1.6314697265625",
    1 => "51.289405902717,-1.9940185546875",
    2 => "51.203441743081,-0.9832763671875",
    3 => "51.727028157048,-1.6314697265625"
    );

    Donc mon questionnement est comment ne pas tenir compte des , qui sépare les latitudes et longitudes et comment ignorer les [], si j'utiliseais explode()?

    Merci pour vos lumières

  2. #2
    Membre habitué Avatar de daniel61
    Inscrit en
    Décembre 2006
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 139
    Points : 169
    Points
    169
    Par défaut
    Bonsoir

    Tous les attributs d'un json? Donc json_decode sera le plus simple, avec un array_map ou non. Avec les versions récentes de PHP, eval() peut donner le même résultat mais en plus risqué. Même les fans des regexp trouveront une voie plus ou moins viable sur le long terme. Bref, json_decode() semble être la fonction pour satisfaire tes désirs

    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
    <pre><?php
    // data
    $data = '[[51.727028157048,-1.6314697265625],[51.289405902717,-1.9940185546875],[51.203441743081,-0.9832763671875],[51.727028157048,-1.6314697265625]]';
    // json_decode()
    var_dump(array_map(function($a){return implode(',', $a);}, json_decode($data)));
    var_dump(json_decode($data));
    // eval()
    var_dump(array_map(function($a){return implode(',', $a);}, eval("return $data;")));
    var_dump(eval("return $data;"));
    // regexp
    $tableau = array();
    if(preg_match_all('#([+-]?\d+\.\d+),((?1))#', $data, $coordonnees, PREG_SET_ORDER)) {
      foreach($coordonnees as $i => $coordonnee) {
        $tableau[] = array(floatval($coordonnee[1]), floatval($coordonnee[2]));
        $coordonnees[$i] = $coordonnee[0];
      }
    }
    var_dump($coordonnees, $tableau);
    ?></pre>

  3. #3
    Débutant  
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 098
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 098
    Points : 946
    Points
    946
    Par défaut
    Hello
    Je te remerciepour ta suggestion.
    C'est ce que j'avais aussi pensé et je vais aller dans cette direction.
    Merci

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

Discussions similaires

  1. Extraire une chaine de caractere à partir d'un fichier
    Par Dalidou dans le forum Général Java
    Réponses: 11
    Dernier message: 10/06/2009, 22h04
  2. Réponses: 10
    Dernier message: 06/03/2008, 15h12
  3. Réponses: 7
    Dernier message: 18/07/2006, 14h56
  4. Réponses: 2
    Dernier message: 21/05/2006, 19h31
  5. Extraire un nom d'une chaine de caractere
    Par iamspacy dans le forum Linux
    Réponses: 4
    Dernier message: 03/05/2004, 21h34

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