PHP:有没有办法看到像'n'这样的“隐形”字符

时间:2012-02-19 01:33:56

标签: php

有没有办法以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或类似内容?

5 个答案:

答案 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 [\]^_`
?>