Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Bruno Augusto

Algum Padrão de String Reconhecido?

Recommended Posts

Por acaso, nessa string abaixo representada, existe algum padrão reconhecido por alguém?

 

[[["O que você está falando?","What are you talking about?","",""]],,"en",,[["O que você está",[5],1,0,673,0,4,0],["falando?",[6],1,0,651,4,6,0]],[["What are you",5,[["O que você está",673,1,0],["O que você",17,1,0],["Que você está",0,1,0],["O que estás",0,1,0],["O que estás a",0,1,0]],[[0,12]],"What are you talking about?"],["talking about ?",6,[["falando?",651,1,0]],[[13,27]],""]],,,[["en"]],1]

Como essa string vêm por AJAX, com Content-type equivalente à text/javascript, a primeira coisa que me veio em mente foi JSON.

 

Mas json_decode() retornou NULL. Lis um pouquinho mais e, através de um snippet no Manual, tentei desfazer um possível JSONP, mas continuou como NULL.

 

Não estava muito a fim de usar um preg_split() nisso...

Compartilhar este post


Link para o post
Compartilhar em outros sites

:grin:

 

Acabei de abrir o tópico justamente para postar isso.

 

Primeiro que esse JSON não é válido. Erro de sintaxe claro, muito competentemente mostrado pelo JSONLint.

 

Primeiro tive de corrigi-lo:

 

$json = preg_replace( '/,(?=[\],])/', ',null', $json );

Então, bastou um utf8_encode() na string antes de passar para json_encode() que funcionou.

 

Porém o buraco é um pouco mais embaixo. A "estrutura", digamos assim, precisou ser codificada, mas as strings dentro da estrutura, não.

 

Daí eu experimentei desfazer o procedimento recursivamente:

 

array_walk_recursive(

   $json,

   function( &$item ) {
       $item = utf8_decode( $item );
   }
);

O resultado foi o array multidimensional perfeitinho, mas nem sempre comer o bolo é mais gostoso do que fazê-lo, então eu queria saber se há alguma explicação.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pois é, eu percebi que não era válido mesmo...

Mas estranho esse resultado, pq caracteres como (), [] e {} não sofrem de problemas de codificação...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.