PHP mb_strpos不识别版权符号
我试图使用mb_strpos PHP函数在某些网页上搜索©符号PHP mb_strpos不识别版权符号,php,strpos,mbstring,Php,Strpos,Mbstring,我试图使用mb_strpos PHP函数在某些网页上搜索©符号 $pagecontent = file_get_contents($website_url); if (mb_strpos($pagecontent, $string_to_find) === false) { // String / Content NOT found on page (FAIL) return false;
$pagecontent = file_get_contents($website_url);
if (mb_strpos($pagecontent, $string_to_find) === false) {
// String / Content NOT found on page (FAIL)
return false;
} else {
// String / Content FOUND on page (SUCCESS)
return true;
}
我会将$website\u url和$string\u to\u find“Copyright©”变量传递给函数,但它返回false,即使我知道©存在于网页中。如果我从字符串中删除©字符,则返回true。。所以我猜PHP在寻找©符号时会出现问题
有人能给我指出正确的方向吗?因为您使用的是
mb\u strpos
我假设您将编码设置为mb\u internal\u encoding
?因为否则您可以直接使用strpos
那么,网站的编码是什么?你的“内部编码”是什么?我打赌他们不匹配
例如,如果网站采用UTF-8编码,您可以使用
mb_strpos($pagecontent, $string_to_find, 0, "utf-8")
此外,布尔值是值,因此您可以将代码简化为
$pagecontent = file_get_contents($website_url);
return (mb_strpos($pagecontent, $string_to_find) !== false);
完整的解决办法是:
$pagecontent = file_get_contents($website_url);
return (mb_strpos($pagecontent, $string_to_find, 0, "utf-8") !== false);
假设网站使用UTF-8。此外,您必须确保$string\u to\u find具有相同的编码。如果将版权符号作为字符串文字放入代码中(如“?”
),则源文件也应采用UTF-8编码。在PHP中,字符串在内部只是字节流
其他可能性(我刚刚阅读了上面的评论):该网站包含一个
&副本代码>HTML实体。在这种情况下,您必须搜索©代码>代替。是显示版权符号的网站还是显示html实体©代码>表示版权符号的?你可以通过查看源代码来判断。很多网站也可能使用©
而不是)
。可能还有字符编码问题。您好,它没有使用©;源代码只是按原样显示符号。我的php脚本和网页本身都是UTF8编码的。