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:
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:
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