ID: 42186 User updated by: djlopez at gmx dot de Reported By: djlopez at gmx dot de Status: Bogus Bug Type: JSON related Operating System: * PHP Version: 5.2.3 New Comment:
Another "bug": $json = '{"titel":"Trance","desc":"Trance%0ADJ"}'; var_dump(json_decode(urldecode($json), true)); Afaik %0A is urlencoded for \n. json_decode() is returning NULL here also! And this should be a bug... Previous Comments: ------------------------------------------------------------------------ [2007-08-04 14:42:16] djlopez at gmx dot de I want to remember you, where JSON is used: Javascript - to send data to the server. When there's a textarea, some OS/Browser are sending an \l for a linebreak. So, if an \l is into the string, the _whole_ function won't work! Sometimes it also appears with an \n, but I can't reproduce this error. Maybe it has multiple causes. And as far as I can see, there's no thrown exception to catch this error. The function json_decode() may be implemented very strictly, but without an exception, it's very hard to debug the code. Please DON'T set this bug to closed!!! Don't ignore the not-that-good implementation! Thx! ------------------------------------------------------------------------ [2007-08-04 14:24:00] [EMAIL PROTECTED] And according to http://www.json.org/ \l is not in the accepted list of chars. So no bug here. ------------------------------------------------------------------------ [2007-08-04 14:17:56] [EMAIL PROTECTED] Replace print_r() with var_dump() and you might actually see something. ------------------------------------------------------------------------ [2007-08-02 18:47:06] djlopez at gmx dot de Description: ------------ json_decode() returns nothing, when the string contains an \l (lowercase L), maybe (internal) crash!? Reproduce code: --------------- $json = '{"stringwithbreak":"line with a \lbreak!"}'; print_r(json_decode($json, true)); Expected result: ---------------- print_r() is NOT returning anything, json_decode() seems to be not executed. Actual result: -------------- Could be "solved" this way: print_r(json_decode(str_replace("\\l", "", $json), true)); However, it's a bug... ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=42186&edit=1