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 :

Récupérer une partie d'une chaine de caractères dans une variable


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 11
    Points : 3
    Points
    3
    Par défaut Récupérer une partie d'une chaine de caractères dans une variable
    Bonjour et désolé pour cette question récurrente. Si une âme charitable veut bien m'aider, j'expose le problème. Je souhaite utiliser un plugin joomla geoportalapi dont voici une partie du 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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
     
    function geoportalapi (&$matches)
        {
     
            $this->nb_map ++;
     
            $params = $matches[1]; // paramettres
            $overlays = $matches[2]; // overlays
     
            $param_default['width'] = $this->params->get('width');
            $param_default['height'] = $this->params->get('height');
            $param_default['lon'] = $this->params->get('longitude');
            $param_default['lat'] = $this->params->get('latitude');
    	$param_default['zoom'] = $this->params->get('zoom');
     
     
            $overlayshtml= $this->createHTMLoverlays($overlays);
     
     
     
            $regex_width = "#.*width=\'(.*)\'.*#s";
            $regex_height = "#.*height=\'(.*)\'.*#s"; 
            $regex_lon = "#.*lon=\'(.*)\'.*#s";
            $regex_lat = "#.*lat=\'(.*)\'.*#s";
    	$regex_zoom = "#.*zoom=\'(.*)\'.*#s";
     
            $param['width'] = preg_replace($regex_width, "$1", $params);
            $param['height'] = preg_replace($regex_height, "$1", $params);
            $param['lon'] = preg_replace($regex_lon, "$1", $params);
            $param['lat'] = preg_replace($regex_lat, "$1", $params);
    	$param['zoom'] = preg_replace($regex_zoom, "$1", $params);
     
     
     
            if($param['lat'] == $params) // si le paramettre n'est pas présent
                $param['lat'] = $param_default['lat'];
            if($param['lon'] == $params) // si le paramettre n'est pas présent
                $param['lon'] = $param_default['lon'];
            if($param['height'] == $params) // si le paramettre n'est pas présent
                $param['height'] = $param_default['height'];
            if($param['width'] == $params) // si le paramettre n'est pas présent
                $param['width'] = $param_default['width'];
            if($param['zoom'] == $params) // si le paramettre n'est pas présent
                $param['zoom'] = $param_default['zoom'];
     
            $key  = $this->params->get('key');
     
            $html = "<div id=\"viewerDiv$this->nb_map\" style=\"width:". $param['width'] ."px; height:". $param['height']."px; \"></div>\n";
     
            if($this->nb_map == 1)
            {
                $html .= "<script type=\"text/javascript\" src=\"http://api.ign.fr/geoportail/api/js/latest/GeoportalExtended.js\">
                          <!-- -->
                          </script>";
     
            }
     
     
            //TODO : listener sur actions séparés (pour le onload)
            $html .= "<script type=\"text/javascript\"><!--//--><![CDATA[//><!--
     
                      var load$this->nb_map= function() {
                          var VIEWER$this->nb_map = Geoportal.load(
                              // div's ID:
                              'viewerDiv$this->nb_map',
                              // API's keys:
                              ['".$key."'],
                              {// map's center :
                                  // longitude:
                                  lon:".$param['lon'].",
                                  // latitude:
                                  lat:".$param['lat']."
                              },".$param['zoom']."
                              ".$overlayshtml."
     
                          );
                      };
                      //--><!]]></script>";
     
            return $html;
     
        }
    Ce plugin fait un passage de paramètre dans la variable $params. Elle contient les informations width, height, lat, lon et zoom et est de la forme suivante :
    width='254' height='752' lon='6.739' lat='45.618' zoom='20'

    Le problème est que les informations width, ... ne sont pas récupérées par la variable $param['width'].

    je souhaite donc trouver un moyen que la variable $param['width'] récupère le 254, $param['height'] le 752, ...

    J'avais penser faire un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $regex=????
    preg_match ($regex, $params, $match);
    $param['width'] = $match[0];
    $param['height'] = $match[1];
    $param['lon'] = $match[2];
    $param['lat'] = $match[3];
    $param['zoom'] = $match[4];
    Seulement, je ne trouve pas la $regex à utiliser.

    Merci par avance

  2. #2
    Membre émérite Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Points : 2 736
    Points
    2 736
    Par défaut
    Dans les cas-ci, les matches ($1) sont gourmands. Il faut les faire paresseux et ça va y aller.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    //$regex_width = "#.*width=\'(.*)\'.*#s";
    $regex_width = "#.*width=\'(.*?)\'.*#s";
    //etc etc

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 11
    Points : 3
    Points
    3
    Par défaut
    Merci de ta réponse. Lorsque j'essaie ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $regex="#.*width=\'(.*)\'.*#s";
    preg_match ($regex, $params, $match);
    $param['width'] = $match[0];
    avec $params comportant : width='254' height='752' lon='6.739' lat='45.618' zoom='20'

    Rien de ressort !

    Une idée ?

  4. #4
    Membre émérite Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Points : 2 736
    Points
    2 736
    Par défaut
    >Rien de ressort !
    Non, je ne pense pas. Il vous donne le params entier. Si il n'y avait pas de particule width=, il ne vous donnerait dans ce cas rien en effet.

Discussions similaires

  1. Demander une chaine de caractères dans une pile en liste chainée
    Par chikita dans le forum Débuter avec Java
    Réponses: 4
    Dernier message: 02/12/2014, 15h53
  2. Récupérer une partie d'une chaine de caractères dans une variable
    Par kardo dans le forum IGN API Géoportail
    Réponses: 4
    Dernier message: 18/06/2013, 20h36
  3. Récupérer une chaine de caractère dans une page
    Par BrunS dans le forum Langage
    Réponses: 3
    Dernier message: 15/11/2005, 14h28
  4. [String]Recherche d'une chaine de caractères dans une autre
    Par Crazyblinkgirl dans le forum Langage
    Réponses: 3
    Dernier message: 29/07/2004, 11h51
  5. recherche d'une chaine de caractère dans une données text
    Par jdeheul dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 17/06/2004, 16h35

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