2013-03-07 60 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