2012-03-21 59 views
11

Al usar echo json_encode ($ array, JSON_UNESCAPED_UNICODE);json_encode con la opción JSON_UNESCAPED_UNICODE

recibo el este error

Advertencia: json_encode() espera exactamente 1 parámetro, 2 dada

+5

Se añadió el parámetro 'options' en PHP 5.3.0. –

+4

Y JSON_UNESCAPED_UNICODE agregado en PHP 5.4.0 –

+0

Esto podría ser útil: http://stackoverflow.com/questions/16498286/why-does-the-php-json-encode-function-convert-utf-8-strings-to -hexadecimal-entit –

Respuesta

7

Su versión de PHP puede ser demasiado baja:

http://php.net/manual/en/function.json-encode.php

string json_encode (mixed $value [, int $options = 0 ]) 

5.3.0 The options parameter was added 
+0

hmm ok y si este es el caso, ¿cómo puedo hacer lo mismo pero con script diferente – Ben

+2

En http://php.net/manual/en/function.json-encode.php hay un comentario con " Reemplazo simple para JSON_UNESCAPED_UNICODE (PHP <5.4 por ejemplo) " – biziclop

+0

@EvenJohnson. 'JSON_UNESCAPED_UNICODE' probablemente no es realmente necesario. Si su versión de PHP es demasiado baja, simplemente prescinde de ella. – TRiG

4

Ver el parche en http://code.google.com/p/apns-php/issues/detail?id=22 que permite la misma funcionalidad en PHP 5.2.

ejecutar Básicamente algo como esto:

foreach ($array as &$val) { 
    $val = preg_replace_callback('/\\\\u([0-9a-f]{4})/i', 
     function($matches) { 
      return mb_convert_encoding(pack('H*', $matches[1]), 'UTF-8', 'UTF-16'); 
     }, $val); 
} 
+0

Incluso esto se acerca, esto es técnicamente incorrecto. También PHP 5.4 tiene un error aquí, vea [PHP Bug # 62010 json_decode produce secuencias de bytes inválidas] (https://bugs.php.net/bug.php?id=62010) – hakre

+0

Esto no funciona – user1775671

Cuestiones relacionadas