有没有办法以print_r()的方式查看空格,换行符和其他非打印字符等不可见字符?
原因是我的数组中存在某种我无法看到和破坏的字符。
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 :(得分:43)
要查看所有不可见字符\r
,\n
等等...很高兴看到json_encode
版本,一切都很清楚:
$str = "...";
echo json_encode($str);
答案 1 :(得分:4)
您可以列出所有控制字符,但试试这个以便快速解决?
PHP - print string with control characters
这是一种简单的str_replace("\n",'\n',$string)
修复方法,但您可以根据数组上的函数回调调整解决方案以转换这些字符。
答案 2 :(得分:3)
您可以运行您的php脚本,并将其直接发送到hexdump -C
答案 3 :(得分:2)
要准确复制输入字符串,而没有周围的"
且没有序列化,请使用此json_encode()
的包装器:
substr(json_encode((string)$string), 1, -1)
它执行字符串转换并删除JSON标准的"
。
答案 4 :(得分:1)
您可以使用addcslashes功能:
string addcslashes(string $ str,string $ charlist)
将在字符前返回带反斜杠的字符串。一个例子是:
<?php echo addcslashes('foo[ ]', 'A..z'); // output: \f\o\o\[ \] // All upper and lower-case letters will be escaped // ... but so will the [\]^_` ?>