我正在尝试使用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有一个问题试图找到©符号?
有人能指出我正确的方向吗?
答案 0 :(得分:0)
由于您使用<?xml version='1.0' encoding='UTF-8' ?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<android.support.v7.widget.Toolbar
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#ff6d7fe2"
android:minHeight="?android:attr/actionBarSize"
app:contentInsetEnd="0dp"
app:contentInsetStart="0dp" >
</android.support.v7.widget.Toolbar>
.
.
.
</RelativeLayout>
,我假设您使用mb_strpos
设置编码?因为否则你可以使用mb_internal_encoding
。
那么,网站的编码是什么?你的“内部编码”是什么?我打赌他们不匹配。
E.g。如果网站采用UTF-8编码,您可以使用
strpos
此外,布尔值是值,因此您可以将代码简化为
mb_strpos($pagecontent, $string_to_find, 0, "utf-8")
完整的解决方案是:
$pagecontent = file_get_contents($website_url);
return (mb_strpos($pagecontent, $string_to_find) !== false);
假设网站使用的是UTF-8。此外,您必须确保$ string_to_find具有相同的编码。如果您将版权符号作为字符串文字放入代码中(如$pagecontent = file_get_contents($website_url);
return (mb_strpos($pagecontent, $string_to_find, 0, "utf-8") !== false);
),则源文件也应为UTF-8编码。在PHP中,字符串只是内部的字节流。
其他可能性(我刚看过上面的评论):该网站包含一个"©"
HTML实体。在这种情况下,您必须搜索©
。