Я пытаюсь использовать PHP-функцию mb_strpos для поиска символа © на определенных веб-страницах.
$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, пытающимся найти символы ©?
Может кто-то указать мне верное направление?
Так как вы используете 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 имеет ту же кодировку. Если вы поместили символ авторского права в виде строкового литерала в свой код (как "©"
), ваши исходные файлы также должны быть в кодировке UTF-8. В PHP строки — это просто байтовые потоки внутри.
Другая возможность (я только что прочитал комментарии выше): веб-сайт содержит ©
HTML-сущность В этом случае вам придется искать ©
вместо.
Других решений пока нет …