Req #63745 [Opn->Nab]: Var_dump on null characters

From: Date: Wed, 12 Dec 2012 01:40:59 +0000
Subject: Req #63745 [Opn->Nab]: Var_dump on null characters
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-175292@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=63745&edit=1

 ID:                 63745
 Updated by:         aharvey@php.net
 Reported by:        jesper dot hag at gmail dot com
 Summary:            Var_dump on null characters
-Status:             Open
+Status:             Not a bug
 Type:               Feature/Change Request
-Package:            *General Issues
+Package:            Variables related
 Operating System:   CentOS
 PHP Version:        5.3Git-2012-12-11 (Git)
 Block user comment: N
 Private report:     N

 New Comment:

var_dump() dumps the contents of the string as is, so the null byte is literally a null byte in the
output. If you run your test script through hexdump, you get this:

adamh@swiftdesk7:~$ php /tmp/test.php | hexdump -C
00000000  73 74 72 69 6e 67 28 36  29 20 22 00 32 33 34 35  |string(6) ".2345|
00000010  36 22 0a                                          |6".|
00000013

You can see the null byte in the output.

What you probably want instead of var_export(), which will escape non-printable characters: for
instance, your test string is exported as:

'' . "\0" . '23456'


Previous Comments:
------------------------------------------------------------------------
[2012-12-11 19:04:19] jesper dot hag at gmail dot com

Description:
------------
*Note* My PHP version is actually 5.3.3
The problem I've come up to is that printing a string with var_dump (for debugging 
purpose eg.) that contains null-characters are counted in the string length but 
are not in any way displayed in the var_dump output.

I'm not sure this should be considerate a bug or a feature request because it is 
something I want and perhaps not something that per design should be in this way.

Test script:
---------------
<?php
$string = "123456"; // len 6
$string[0] = ''; (or = null, or = "\0")

var_dump($string); // Outputs string(6) "23456"

?>

Expected result:
----------------
I would expect the above script to output something like string(6) "\0123456", 
that - in my world - would make more sense. 



------------------------------------------------------------------------



-- 
Edit this bug report at https://bugs.php.net/bug.php?id=63745&edit=1


Thread (3 messages)

« previous php.bugs (#175292) next »