Verstehen was \ u0000 ist in PHP / JSON und loswerden es

8

Ich habe keine Ahnung, was passiert, aber ich habe eine Zeichenfolge in einem Array. Es muss eine Zeichenkette sein, da ich diese zuerst ausgeführt habe:

%Vor%

Wenn ich $ array [0] im Klartext an den Browser ausgib, zeigt dies:

%Vor%

Aber wenn ich JSON encodiere $ Array bekomme ich das:

%Vor%

Außerdem muss ich den "There" -Teil (das Bit nach dem \ u0000) trennen, aber das funktioniert nicht:

%Vor%

Ich weiß nicht einmal was es ist oder wie man es in PHP steuert.

Ich habe diesen Link gesehen: Versuchen, dieses von meinem JSON zu finden und loszuwerden ... was darauf hindeutet, dass der JSON, der generiert wird, durch str_replatziert wird. Ich kann das nicht (und muss es wie oben erwähnt zuerst trennen), also habe ich dann Google nach 'php check for backslash \ 0 byte' gefragt, aber ich kann immer noch nicht herausfinden, was zu tun ist.

    
user2143356 06.07.2013, 05:21
quelle

6 Antworten

10

\uXXXX ist die JSON-Unicode-Escape-Notation ( X ist hexadezimal).

In diesem Fall bedeutet es das 0 ASCII-Zeichen, auch bekannt als das NUL-Byte. Um es zu teilen, können Sie entweder tun:

%Vor%

Oder besser noch:

%Vor%     
Alix Axel 06.07.2013, 05:24
quelle
10

Die Zeichenfolge, die Sie haben, ist "hello"hello\x00world"world" oder echo , was auch immer Sie bevorzugen. Wenn Sie helloworld it, wird das Nullsymbol% ​​co_de% nicht angezeigt, deshalb sehen Sie stattdessen json_encode , aber \u0000 erkennt es und entkommt es wie jedes andere Sonderzeichen, deshalb ersetzt durch eine sichtbare Zeichenfolge \u0000 .

In meiner Art zu sehen, json ist die Zeichenfolge perfekt codieren, die \u0000 ist da, um ihre Aufgabe zu tun, die eingegebene Zeichenfolge in einer Json-codierten Weise zu reproduzieren. Sie müssen den Ausgang nicht berühren. Wenn Sie %code% nicht möchten, sollten Sie stattdessen input korrigieren.

    
Havenard 06.07.2013 05:30
quelle
7

Sie können einfach trim($str) ohne Angabe einer charlist

eingeben     
user2207576 10.05.2014 11:30
quelle
2

\uXXXX ist das Unicode-Symbol mit dem Code XXXX (hexadezimal). Zum Beispiel: Ссылка

Wenn du wirklich 0000 bekommst - dann ist es nur das Zeichen mit dem Code 0

    
mishik 06.07.2013 05:24
quelle
2

Ich bin heute auf dieses Problem gestoßen und habe es aussortiert, indem ich \ u0000 in meinem Array durch "" ersetzt habe, bevor ich es an den Client zurücksende.

%Vor%     
Sorin 09.04.2014 09:10
quelle
0

Probieren Sie explode("\u0000", $array[0]); aus und achten Sie dabei auf doppelte Anführungszeichen. Mit einfachen Anführungszeichen wird der literale 6-stellige Wert analysiert.

Wie andere bereits erwähnt haben, ist \u0000 das Unicode-NUL-Zeichen.

    
CJ Wurtz 06.07.2013 05:25
quelle

Tags und Links