2013-03-07 42 views
1

我需要從網站中刪除所有不友好的html字符我使用curl和simplehtml dom解析。在PHP中刪除

<?php 
$html = "this is&nbsp;a text"; 
var_dump($html); 
var_dump(html_entity_decode($html,ENT_COMPAT,"UTF-8")); 

其輸出

串(19) 「這是一個 文本」

串(15) 「這個is┬áa文本」

我不因爲文本中還有其他字符(例如&度),所以要使用preg *。 這讓我瘋狂了!

謝謝, 詹姆斯

回答

1

如果這是一個需要更換隻使用唯一的字符str_replace()

var_dump(str_replace('&nbsp;', ' ', "this is&nbsp;a text")); 

See it in action

+3

他說:「我需要刪除所有可惡的html字符」,而不僅僅是 。有趣的立即upvotes。 – Coder1 2013-03-07 17:33:42

+0

不情願不得不採取這種方法,但不高興,因爲它意味着如果任何HTML字符我沒有考慮彈出,我的解決方案中斷。儘管我沒有回答這個問題。我考慮的一個解決方案是#&[a-zA-Z];#和普通英語一樣,在&符號周圍總會有一個空格。 – James 2013-03-11 09:47:55

3

你需要一個頭指定您的輸出編碼:

<?php 
    header('Content-Type: text/html; charset=utf-8'); 

    $html = "this is&nbsp;a text"; 
    var_dump($html); 
    var_dump(html_entity_decode($html,ENT_COMPAT,"UTF-8")); 
?> 

默認情況下,瀏覽器不會採用UTF-8,這就是爲什麼它顯示錯誤的字符。

+0

是的,它做到了:http://codepad.viper-7.com/e3R5E8 – 2013-03-07 17:38:04

+0

嗨,感謝您的快速回復。這隻會改變腐敗的角色。我在Windows的命令行上運行,會有所作爲嗎?輸出是「字符串(19)」這是 一個文本「 字符串(15)」這是一個文本「」 – James 2013-03-07 17:43:40

+0

也改爲ISO-8859-1,但現在只是一個不同的字符。 – James 2013-03-07 17:46:03