Page 1 sur 1

Remplacer des caractères inapropriés

Posté : 25 juil. 2014, 16:18
par sebcaverne
Je débute vraiment en php... et je commence à désespérer.
Pour un projet technique de formation professionnelle, nous devons placer des points (récupérer sur un serveur via URL) sur une map et faire remonter des informations au survol de ces points.
Nous avons réussi mais un détail nous échappe concernant l’interprétation de certains caractères.
<?php
$url = "http://www.velo-vision.com/vannes/oybike/stands.nsf/getsite?site=vannes&format=json&key=veolia";
$json = file_get_contents($url);
$json_data = json_decode($json, true);
//echo "Mon organisation est : ". $json_data["org"];
//var_dump($json_data);
?>
<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8 />
<title>Vélo à Vannes</title>
<meta name='viewport' content='initial-scale=1,maximum-scale=1,user-scalable=no' />
<script src='https://api.tiles.mapbox.com/mapbox.js/v1.6.3/mapbox.js'></script>
<link href='https://api.tiles.mapbox.com/mapbox.js/v1.6.3/mapbox.css' rel='stylesheet' />
<style>
  body { margin:0; padding:0; }
  #map { position:absolute; top:0; bottom:0; width:100%; }
</style>
</head>
<body>


<div id='map'></div>

<script>
var map = L.mapbox.map('map', 'vlsproject.iaoe0mh9')
  .setView([47.648, -2.7583], 14);
  map.scrollWheelZoom.disable();
var myLayer = L.mapbox.featureLayer().addTo(map);

var geojson = {
    type: 'FeatureCollection',
    features: [
    <?php 
    foreach($json_data["stand"] as $id => $value):
	//echo $value["name"]." sa disponibilite : ".$value["disp"]." sa position : logitude =".$value["lng"]." et latitude = ".$value["lat"]."<br>";
	?>
	{
        type: 'Feature',
        properties: {
            title: '<?php echo "Station : ".$value["name"]; ?>',
			'description': '<?php echo $value["ac"]." emplacements disponibles"."<br>".$value["ab"]." vélos disponibles"."<br>"; ?>',
            'marker-color': '#501E72',
            'marker-size': 'large',
            'marker-symbol': 'bicycle',
            url: '<?php echo $value["name"]; ?>'
        },
        geometry: {
            type: 'Point',
            coordinates: [<?php echo $value["lng"]; ?>, <?php echo $value["lat"]; ?>]
        }
    }, <?php endforeach; ?>]
};

myLayer.setGeoJSON(geojson);
myLayer.on('mouseover', function(e) {
    e.layer.openPopup();
});
myLayer.on('mouseout', function(e) {
    e.layer.closePopup();
});
</script>
</body>
</html>
<?php exit; ?>


Au survol, nous avons des + qui remplace les espaces et d'autres caractères pour les accents ... Nous souhaiterions corriger ces erreurs

Je suis vraiment novice et j'espère que qq'un pour m'accompagner dans le calme et la bonne humeur :-)
Désolé par avance si ma pratique sur le forum n'est pas la bonne.

Sébastien

Re: Remplacer des caractères inapropriés

Posté : 25 juil. 2014, 18:55
par sirakawa
Commençons par le style de la question:
Rien à dire: titre clair, code correctement encadré, question bien formulée.
Ce ne serait pas simplement un problème d'encodage?
On peut tester dans le navigateur (c'est dans Afficher Encodage chez Opera et Affkichage encodage chez Firefox...)
Le + semble remplacer un espace.
Le reste des codes : les codes UTF8 cf : http://www.utf8-chartable.de/
On pourrait s'en tirer pas str_replace, mais peut-être un autre a-t-il une meilleure idée?
html_entity_decode ne fait pas l'affaire

je pars de ton $json
$json = urldecode($json);
ca fournit de l'UTF