Cadenas de codificación Json con espacios

1 minuto de lectura

avatar de usuario
no ponis

Estoy trabajando en una clase de metabox para wordpress y estoy implementando específicamente la carga de medios introducida en 3.5. Para pasar opciones entre la clase metabox y el cargador de medios, me gusta usar json. La estructura de datos básica que tengo está debajo ($data_ar).

Array
(
    [uploader_title] => Upload or choose a video file
    [uploader_button] => Choose
    [allowed_mimes] => Array
        (
            [0] => application/x-shockwave-flash
            [1] => application/pdf
        )

    [show_icon] => 1
    [show_url] => 1
    [show_file_title] => 1
)

El problema es que al hacer un simple

echo '<h1 id="stumped" data-stumped="'.json_encode($data_ar).'">test</h1>';

da como resultado que el atributo de datos que contiene el json tenga un formato incorrecto. El problema es la presencia de cualquier cadena dentro de la matriz con espacios. Envolver cualquier valor de picadura con espacios entre comillas dobles no ayuda.

Configuración del atributo de datos a través de jQuery.data() funciona perfectamente, pero no puedo usarlo porque tengo estos elementos de formulario como repetidores, y las llamadas dobles de jQuery rompen los repetidores.

Hablar de perplejo. ¿Algún consejo sobre dónde debería estar buscando para ordenar esto?

Gracias.

Usar htmlentities para codificar el json. Codificará todos los " que estaba rompiendo el atributo.

echo '<h1 id="stumped" data-stumped="'.htmlentities(json_encode($data_ar)).'">test</h1>';

  • ¡Rápido y perfecto! Busqué a lo largo y ancho para eso hoy. Gracias.

    – no ponis

    26 de abril de 2013 a las 3:59

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad