Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP查看字符串中的特殊字符_Php_Special Characters_Var Dump - Fatal编程技术网

PHP查看字符串中的特殊字符

PHP查看字符串中的特殊字符,php,special-characters,var-dump,Php,Special Characters,Var Dump,试图弄清楚PHP如何处理换行符和特殊字符。我有一个字符串,当我执行var\u dump($string)时,输出是: string 'ls -al free -m' (length=16) 我如何看待埋葬在这里的特殊人物?例如,您需要查看它们是\n还是&10或其他类型 谢谢。查看不可打印字符的最佳方法是打印bin2hex($string)。这将为您提供字符串的实际二进制转储。将此表与您的收藏夹或其他特定于字符串编码的表进行比较。如果您在unix环境中使用PHP Cli运行命令,可以尝

试图弄清楚
PHP
如何处理换行符和特殊字符。我有一个字符串,当我执行
var\u dump($string)
时,输出是:

string 'ls -al

    free -m' (length=16)
我如何看待埋葬在这里的特殊人物?例如,您需要查看它们是
\n
还是
&10
或其他类型


谢谢。

查看不可打印字符的最佳方法是打印
bin2hex($string)
。这将为您提供字符串的实际二进制转储。将此表与您的收藏夹或其他特定于字符串编码的表进行比较。

如果您在unix环境中使用PHP Cli运行命令,可以尝试使用

否则,您可以将var_dump处理为字符串并手动显示特殊字符:

$string = "test
test";

$dump = var_export($string, true);
for ($i = 0; ($i < strlen($dump)); $i++) {
    if ((ord($dump[$i]) < 32) || (ord($dump[$i]) > 127)) {
        echo '(' . ord($dump[$i]) . ')';
    } else {
        echo $dump[$i];
    }
}

// will output 'test(13)(10)test' on Windows, 'test(10)test' on Unix systems.
$string=“测试
测试”;
$dump=var_导出($string,true);
对于($i=0;($i127)){
echo“(”.ord($dump[$i])”;
}否则{
echo$dump[$i];
}
}
//将在Windows上输出“test(13)(10)test”,在Unix系统上输出“test(10)test”。
您可以使用:

preg_match("/(&#[0-9]+;)|[\t\r\n]/", $string, $matches);
print_r($matches);

好的,所以十六进制的输出是
6c73202d616c0d0a66726565202d6d
,它使用从十六进制到ascii输出的转换器
ls-al??free-m
注意??。这些应该是\n。知道到底发生了什么吗?十六进制转储看起来很正常。中间的<代码> 0d0a <代码>只是一个CRLF Windows直线进给。
preg_match("/(&#[0-9]+;)|[\t\r\n]/", $string, $matches);
print_r($matches);