試圖找出PHP
正在使用換行符和特殊字符。我有一個字符串,當我做var_dump($string)
輸出爲:PHP查看字符串中的特殊字符
string 'ls -al
free -m' (length=16)
如何查看埋在這裏的特殊字符?例如需要看看他們是\n
還是

或他們是什麼。
謝謝。
試圖找出PHP
正在使用換行符和特殊字符。我有一個字符串,當我做var_dump($string)
輸出爲:PHP查看字符串中的特殊字符
string 'ls -al
free -m' (length=16)
如何查看埋在這裏的特殊字符?例如需要看看他們是\n
還是

或他們是什麼。
謝謝。
查看不可打印字符的最佳方法是打印bin2hex($string)
。這給你一個字符串的實際二進制轉儲。具體的你最喜歡的ASCII table或其他表來編碼您的字符串是。
如果你在UNIX環境在使用PHP CLI上運行你的命令比較一下,你可以嘗試使用cat。
php file.php | cat -e
否則,你可以處理的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.
你可以使用:
preg_match("/(&#[0-9]+;)|[\t\r\n]/", $string, $matches);
print_r($matches);
好了,十六進制的輸出爲'6c73202d616c0d0a66726565202d6d '使用轉換器從十六進制到ASCII輸出'ls -al ?? free -m'注意到??。那些應該是\ n。任何想法是怎麼回事? – Justin
十六進制轉儲看起來很正常。中間的'0d0a'只是一個CRLF Windows換行符。 – deceze