2013-03-19 87 views
0

當我解析一個站點並打印出明文時,我在打印輸出中得到很多不能通過str_replace刪除的換行符。簡單的html dom php和純文本中的新行

例如,如果我解析eBay和查找結束時,

$ebayEndTime = $this->html_simple_dom->find('span[class=vi-tm-left]', 0)->plaintext; 

在打印出來,它看起來像這樣:

\ t \ t \ t \ t \噸(2013年3月19日\ n \噸\噸\噸\噸\ T15:10:11 PDT)\ n \噸\噸\噸

試圖移除它沒有任何效果:

$search = array('\n', '\t', '\r'); 
error_log("end time:" . str_replace($search, " ", $ebayEndTime)); 

仍導致:

\噸\噸\噸\噸\噸(2013年3月19日\ n \噸\噸\噸\噸\ T15:10:11 PDT)\ n \ t \ t \ t

我需要做些什麼來移除換行符/製表符?我甚至已經試過這是徹底的:

$search = array('\n', '\t', '\r', '\\n', '\\t', '\\r', '\\\\n', '\\\t', '\\\r', '\\\\n', '\\\\t', '\\\\r'); 

據我知道,Java要求的轉義字符轉義,但此打印在日誌文件中,它被打印出來作爲使用的HTML代碼'\'?

+0

我曾嘗試nl2br(),因爲它是我還沒有嘗試過,但它也不能工作,它似乎是越來越打印出來使用特殊字符 - 否則,我相信我的str_replace調用會修復它。如果我使用新行/標籤的字符串複製和過去,並通過str_replace調用運行它,所以看起來它使用特殊字符打印出來 – 2013-03-20 00:12:24

+0

這回答了問題......爲什麼我的str_replace做到了 - 它實際上需要正則表達式嗎? http://stackoverflow.com/questions/1703320/php-remove-whitespace-from-within-a-string – 2013-03-20 00:25:44

+0

問題是,單引號字符串字面上處理。你需要雙引號插入。 – pguardiario 2013-04-26 04:40:25

回答

0

如何:

$str = "\t\t\t\t\t(Mar 19, 2013\n\t\t\t\t\t15:10:11 PDT)\n\t\t\t"; 
echo trim(preg_replace('/\s+/', ' ', $str)); 
#=>(Mar 19, 2013 15:10:11 PDT) 
+0

這會工作,所以我接受。這不是我想做的事情 - 我想要更有活力的東西;-) – 2013-04-26 02:33:59