我正在抓取网站上的信息,我想知道如何忽略或替换某些特殊的HTML字符,例如“á
”,“á
”,“’
”和“&"
。这些字符无法删入数据库。我已使用此替换”
“:
$nbsp = utf8_decode('á');
$mystring = str_replace($nbsp, '', $mystring);
但我似乎无法对这些其他角色做同样的事情。我正在使用XPath从网站上抓取。这将返回我正在查找的确切内容,但保留我不想要的HTML字符,因为它们似乎不允许进入数据库。
感谢您提供任何帮助。
答案 0 :(得分:0)
听起来你有一个整理问题。我建议确保将数据库排序规则设置为utf8_ci,并确保您的网页内容编码也设置为UTF-8。这可能很好地解决了你的问题。
删除所有特殊字符的最佳方法是通过htmlspecialchars()
运行字符串,然后使用以下模式执行不区分大小写的正则表达式查找和替换:
&([a-z]{2,8}+|#[0-9]{2,5}|#x[0-9a-f]{2,4});
这应匹配命名的HTML实体(例如Ω
或
)以及十进制(例如Ӓ
)和基于十六进制(例如&x0BEE;
)的实体。正则表达式将完全剥离它们。
或者,只需使用htmlspecialchars()
的输出来存储奇怪的字符。不理想,但它有效。