2012-02-19 93 views
17

有没有像print_r()这样的方式看到不可见字符,如空格,换行符和其他非打印字符的方法?PHP:有没有办法看到“隐形”字符,如 n

原因是我的阵列中有某种角色无法看到和破坏。

Object Object 
(
    [name] => name 
    [numbers] => Array 
     (
      [0] => 123 

      [1] => 456 
      [2] => 789 
    ) 
    [action] => nothing 
) 

查看[0]和[1]之间的奇怪空白吗?打印出[0]时也会打印换行符。但是,我不在哪里分配一个换行符[0],所以我很困惑。

在php中是否有内置的函数,就像show_invisible(Object->numbers[0]),它会显示123\n或类似的?

+0

在十六进制编辑器中查看输出。许多优秀的文本编辑器都有十六进制模式。我认为这太麻烦了,为了调试将它转换为PHP中的十六进制。我不知道有什么函数可以用人类可读的方式显示非printables – 2012-02-19 01:38:52

回答

1

可以使用addcslashes功能:

串addcslashes(字符串$海峡,字符串$ charlist)

它将在字符之前返回一个带反斜杠的字符串。一个例子是:

<?php 
echo addcslashes('foo[ ]', 'A..z'); 
// output: \f\o\o\[ \] 
// All upper and lower-case letters will be escaped 
// ... but so will the [\]^_` 
?> 
4

你可能会列出所有的控制字符,但试试这个快速修复?

PHP - print string with control characters

这是一个简单str_replace("\n",'\n',$string)一种修复,但你可能能够适应阵列上的一个回调函数的解决方案,这些字符转换。

2

你可以只运行你的PHP脚本,并管道将其直hexdump -C

27

要看到所有的不可见的字符,不仅\r\n等等......这是很好看json_encode版版本,一切都清楚了:

$str = "..."; 
echo json_encode($str); 
1

若要精确复制输入字符串,而不包含周围的"并且没有序列化,请使用此包装器的json_encode()

substr(json_encode((string)$string), 1, -1) 

它执行字符串转换并删除JSON标准的"

相关问题