Volledige versie bekijken : php error bij ophalen XMl



KrisTemmerman
22 May 2009, 12:37
hoi dit is mijn eerste post hier op minatica en ik hoop dat jullie me kunnen helpen.
Ik heb adres gegevens in een databank. deze gegevens worden omgevormd naar gps coordinaten.
Nu het probleem is dat speciale tekens (bv. é à è ^ ù µ ^) niet kunnen worden ingelezen.
De parsing error die ik krijg gaat als volgt:

parser error : Input is not proper UTF-8, indicate encoding !
wat ik reeds geprobeerd heb is

utf8_encode($address);[/ PHP]
en een function die de karakters omzet naar htmlcode bv
[PHP]$xmlStr=str_replace("ß",'ß',$xmlStr);

ik hoop dat jullie me kunnen helpen.
de code die de bestanden in een xmlsheet plaatst


<?php

require("log.php");

define("MAPS_HOST", "maps.google.com");
define("KEY", "xxxx");

// Opens a connection to a MySQL server
$connection = mysql_connect("localhost", $username, $password);
if (!$connection) {
die("Not connected : " . mysql_error());
}

// Set the active MySQL database
$db_selected = mysql_select_db($database, $connection);
if (!$db_selected) {
die("Can\'t use db : " . mysql_error());
}

// Select all the rows in the markers table

$query = "SELECT * FROM locations WHERE 1";
$result = mysql_query($query);
if (!$result) {
die("Invalid query: " . mysql_error());
}

// Initialize delay in geocode speed
$delay = 0;
$base_url = "http://" . MAPS_HOST . "/maps/geo?output=xml" . "&key=" . KEY;

// Iterate through the rows, geocoding each address
while ($row = @mysql_fetch_assoc($result)) {
$geocode_pending = true;

while ($geocode_pending) {

$address = $row["pAdress"];

$id = $row["id"];
$request_url = $base_url . "&q=" . $address;

$xml = simplexml_load_file($request_url) or die("url not loading");


$status = $xml->Response->Status->code;
if (strcmp($status, "200") == 0) {
// Successful geocode
$geocode_pending = false;
$coordinates = $xml->Response->Placemark->Point->coordinates;
$coordinatesSplit = split(",", $coordinates);
// Format: Longitude, Latitude, Altitude
$lat = $coordinatesSplit[1];
$lng = $coordinatesSplit[0];

$query = sprintf("UPDATE locations " .
" SET pLat = '%s', pLng = '%s' " .
" WHERE id = '%s' LIMIT 1;",
mysql_real_escape_string($lat),
mysql_real_escape_string($lng),
mysql_real_escape_string($id));
$update_result = mysql_query($query);
if (!$update_result) {
die("Invalid query: " . mysql_error());
}
} else if (strcmp($status, "620") == 0) {
// sent geocodes too fast
$delay += 100000;
} else {
// failure to geocode
$geocode_pending = false;
echo "Address " . $address . " failed to geocoded. ";
echo "Received status " . $status . "
\n";
}
usleep($delay);
}
}



?>

Dexter
22 May 2009, 23:41
Je kan eens

ISO-8859-1

i.p.v. UTF-8 Proberen, deze bevat de meeste tekens, denk ik?