Понимание того, что \ u0000 находится в PHP / JSON и избавиться от него

Я не знаю, что происходит, но у меня есть строка внутри массива. Он должен быть строкой, поскольку я сначала использовал ее:

$array[0] = (string)$array[0]; 

Если я вывешу $ array [0] в браузер в виде простого текста, это будет выглядеть так:

 hellothere 

Но если я JSON кодирую $ array, я получаю следующее:

 hello\u0000there 

Кроме того, мне нужно отделить часть «there» (бит после \ u0000), но это не работает:

 explode('\u0000', $array[0]); 

Я даже не знаю, что такое или как управлять им в PHP.

Я видел эту ссылку: пытаюсь найти и избавиться от этого \ u0000 от моего json …, который предлагает str_replacing генерируемый JSON. Я не могу этого сделать (и нужно сначала отделить его, как упоминалось выше), чтобы затем проверить Google на «проверку php на обратную косую черту \ 0 байт», но я все еще не могу понять, что делать.

\uXXXX – это обозначение escape- \uXXXX Unicode JSON ( X является шестнадцатеричным).

В этом случае это означает, что символ ASCII 0 , так называемый NUL-байт, может разделить его:

 explode('\u0000', json_encode($array[0])); 

Или еще лучше:

 explode("\0", $array[0]); // PHP doesn't use the same notation as JSON 

У вас есть строка "hello\0world" или "hello\x00world" что вы предпочитаете. Если вы его echo , нулевой символ \0 не будет отображаться, поэтому вместо него вы видите helloworld , но json_encode обнаружит его и helloworld от него, как и к любому другому специальному символу, поэтому его заменяет видимая строка \u0000 ,

В моем способе видеть это, json кодирует строку отлично, \u0000 должен выполнить свою работу по воспроизведению введенной строки в кодировке json. Вам не нужно касаться его выхода. Если вы этого не хотите, вы должны исправить его вход .

вы можете просто сделать trim($str) не давая ему charlist

\uXXXX является символом unicode с кодом XXXX (шестнадцатеричный). Например: http://msdn.microsoft.com/en-us/library/aa664669(v=vs.71).aspx

Если вы действительно получаете 0000 – тогда это всего лишь символ с кодом 0

Сегодня я столкнулся с этой проблемой, и я разобрал ее, заменив \ u0000 в моем массиве на «" перед отправкой обратно клиенту.

 echo str_replace('\\u0000', "", json_encode($send)); 

Попробуйте explode("\u0000", $array[0]); , убедившись, что вы используете двойные кавычки. С одинарными кавычками он будет разбирать буквенное значение символа 6.

Как \u0000 другие, \u0000 является \u0000 Unicode.