2012-09-12 31 views
3

試圖找出PHP正在使用換行符和特殊字符。我有一個字符串,當我做var_dump($string)輸出爲:PHP查看字符串中的特殊字符

string 'ls -al 

    free -m' (length=16) 

如何查看埋在這裏的特殊字符?例如需要看看他們是\n還是&#10或他們是什麼。

謝謝。

回答

5

查看不可打印字符的最佳方法是打印bin2hex($string)。這給你一個字符串的實際二進制轉儲。具體的你最喜歡的ASCII table或其他表來編碼您的字符串是。

+0

好了,十六進制的輸出爲'6c73202d616c0d0a66726565202d6d '使用轉換器從十六進制到ASCII輸出'ls -al ?? free -m'注意到??。那些應該是\ n。任何想法是怎麼回事? – Justin

+0

十六進制轉儲看起來很正常。中間的'0d0a'只是一個CRLF Windows換行符。 – deceze

2

如果你在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. 
0

你可以使用:

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