Bu kodu ben fonksiyonları, html_entities_decode, utf8_encode ve şifresini çözmek, hex kodlarını deşifre çok denedimphp json_decode dosyasında JSON_ERROR_UTF8 hatası nasıl çözülür?
$json = file_get_contents("http://www.google.com/alerts/preview?q=test&t=7&f=1&l=0&e");
print_r(json_decode(utf8_encode($json), true));
//////////////
// Define the errors.
$constants = get_defined_constants(true);
$json_errors = array();
foreach ($constants["json"] as $name => $value) {
if (!strncmp($name, "JSON_ERROR_", 11)) {
$json_errors[$value] = $name;
}
}
// Show the errors for different depths.
foreach (range(4, 3, -1) as $depth) {
var_dump(json_decode($json, true, $depth));
echo 'Last error: ', $json_errors[json_last_error()], PHP_EOL, PHP_EOL;
}
çalışıyorum, ama her zaman hata "JSON_ERROR_UTF8" olsun.
Bunu nasıl çözebilirim?
$input = iconv('UTF-8', 'UTF-8//IGNORE', utf8_encode($input));
$json = json_decode($input);
Kredi:
iconv() daha iyi çalışır:
Ben böyle bir json_encode sarmalayıcı kullanmanızı öneririz . Bu URL tarafından döndürülen JSON, çiftler kullanması gereken tek tırnak kullandığı için geçerli değil. JSON LINT (http://jsonlint.com/) iletmez. Yani, "x $" kodunuzun 2. satırında "json" olmalı mıyım? – JAAulde
Evet, kodu temizliyordum ve $ x değerini değiştirmeyi unuttum, geçerli hale getirmeyi denediniz mi ve daha sonra bunu çözmeyi denediniz mi? Bunu nasıl geçerli hale getireceğimi bilemezdim. –
Tüm tek tırnakları iki katına değiştirmeyi denedim, ancak diğer doğrulama sorunlarıyla karşılaştım. Hala bir göz atıyor. – JAAulde