Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从PHP中的字符串中删除某些特殊HTML字符_Php_Html_String_Xpath_Character - Fatal编程技术网

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

从PHP中的字符串中删除某些特殊HTML字符,php,html,string,xpath,character,Php,Html,String,Xpath,Character,我正在从一个网站上抓取信息,我想知道如何忽略或替换一些特殊的HTML字符,例如“á;”、“á;”、“’”和“&””。无法将这些字符刮入数据库。我已经使用以下内容替换了“”: $nbsp = utf8_decode('á'); $mystring = str_replace($nbsp, '', $mystring); 但我似乎不能对其他角色做同样的事情。我正在使用XPath从网站上抓取。这将返回我正在查找的确切内容,但保留我不想要的HTML字符,因为

我正在从一个网站上抓取信息,我想知道如何忽略或替换一些特殊的HTML字符,例如“
á;
”、“
á;
”、“
’
”和“
&”
”。无法将这些字符刮入数据库。我已经使用以下内容替换了“
”:

$nbsp = utf8_decode('á');
$mystring = str_replace($nbsp, '', $mystring);
但我似乎不能对其他角色做同样的事情。我正在使用XPath从网站上抓取。这将返回我正在查找的确切内容,但保留我不想要的HTML字符,因为它们似乎不允许进入数据库


谢谢您的帮助。

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


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

&([a-z]{2,8}+|#[0-9]{2,5}|#x[0-9a-f]{2,4});
这应该匹配命名的HTML实体(例如
Ω
)以及十进制实体(例如
&01234
)和十六进制实体(例如
&x0BEE;
)。正则表达式将完全删除它们


或者,只需使用
htmlspecialchars()
的输出来存储它,并保持奇怪的字符不变。不理想,但它可以工作。

XY问题。这些字符在数据库中非常好。你问错问题了,我的问题不是。我甚至将这些字符替换为它们要表示的内容,插入时没有问题,但是当我将它们保留在其中时,它不会插入。所以,你一点也不奇怪为什么它没有添加到数据库中,而是想将问题隐藏起来?专业提示:这个结局很好的可能性很小。@PeeHaa是正确的,但是你看过了吗?(如果你有更合理的理由想这么做…)谢谢所有的帮助。原来这个preg_replace适合我的需要:preg_replace('/[^a-zA-Z0-9%[]\.()%&-]/s','.$String);