2012-02-19 119 views
17

有沒有像print_r()這樣的方式看到不可見字符,如空格,換行符和其他非打印字符的方法?PHP:有沒有辦法看到「隱形」字符,如 n

原因是我的陣列中有某種角色無法看到和破壞。

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

在十六進制編輯器中查看輸出。許多優秀的文本編輯器都有十六進制模式。我認爲這太麻煩了,爲了調試將它轉換爲PHP中的十六進制。我不知道有什麼函數可以用人類可讀的方式顯示非printables – 2012-02-19 01:38:52

回答

1

可以使用addcslashes功能:

串addcslashes(字符串$海峽,字符串$ charlist)

它將在字符之前返回一個帶反斜槓的字符串。一個例子是:

<?php 
echo addcslashes('foo[ ]', 'A..z'); 
// output: \f\o\o\[ \] 
// All upper and lower-case letters will be escaped 
// ... but so will the [\]^_` 
?> 
4

你可能會列出所有的控制字符,但試試這個快速修復?

PHP - print string with control characters

這是一個簡單str_replace("\n",'\n',$string)一種修復,但你可能能夠適應陣列上的一個回調函數的解決方案,這些字符轉換。

2

你可以只運行你的PHP腳本,並管道將其直hexdump -C

27

要看到所有的不可見的字符,不僅\r\n等等......這是很好看json_encode版版本,一切都清楚了:

$str = "..."; 
echo json_encode($str); 
1

若要精確複製輸入字符串,而不包含周圍的"並且沒有序列化,請使用此包裝器的json_encode()

substr(json_encode((string)$string), 1, -1) 

它執行字符串轉換並刪除JSON標準的"

相關問題