从PHP中的字符串中删除某些特殊的HTML字符

时间:2014-03-10 23:54:34

标签: php html string xpath character

我正在抓取网站上的信息,我想知道如何忽略或替换某些特殊的HTML字符,例如“á”,“á”,“’”和“&amp"。这些字符无法删入数据库。我已使用此替换” “:

$nbsp = utf8_decode('á');
$mystring = str_replace($nbsp, '', $mystring);

但我似乎无法对这些其他角色做同样的事情。我正在使用XPath从网站上抓取。这将返回我正在查找的确切内容,但保留我不想要的HTML字符,因为它们似乎不允许进入数据库。

感谢您提供任何帮助。

1 个答案:

答案 0 :(得分:0)

听起来你有一个整理问题。我建议确保将数据库排序规则设置为utf8_ci,并确保您的网页内容编码也设置为UTF-8。这可能很好地解决了你的问题。


删除所有特殊字符的最佳方法是通过htmlspecialchars()运行字符串,然后使用以下模式执行不区分大小写的正则表达式查找和替换:

&([a-z]{2,8}+|#[0-9]{2,5}|#x[0-9a-f]{2,4});

这应匹配命名的HTML实体(例如Ω )以及十进制(例如&#01234)和基于十六进制(例如&x0BEE;)的实体。正则表达式将完全剥离它们。

或者,只需使用htmlspecialchars()的输出来存储奇怪的字符。不理想,但它有效。