-2

我正在尝试使用 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;

        } else {

                // String / Content FOUND on page (SUCCESS)
                return true;
        }

我会将$website_url$string_to_find "Copyright ©" 变量传递给函数,但它返回 false,即使我知道 © 存在于网页中。如果我从字符串中删除©字符,那么它返回true..所以我猜PHP试图找到©符号有问题?

谁能指出我正确的方向?

4

1 回答 1

0

由于您使用的是mb_strpos我假设您使用mb_internal_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_to_find 具有相同的编码。如果您将版权符号作为字符串文字放入您的代码 (as "©"),则您的源文件也应该是 UTF-8 编码的。在 PHP 中,字符串在内部只是字节流。


其他可能性(我刚刚阅读了上面的评论):该网站包含一个©HTML 实体。在这种情况下,您必须改为搜索©

于 2015-09-18T16:41:43.863 回答