strpos — PHP mb_strpos не распознает символ авторского права

Я пытаюсь использовать 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, пытающимся найти символы ©?

Может кто-то указать мне верное направление?

-2

Решение

Так как вы используете 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-сущность В этом случае вам придется искать © вместо.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]