file_get_contents иногда не находит тексты

Я новичок в PHP, поэтому, пожалуйста, будьте любезны :)

Иногда file_get_contents выполняет свою работу, а иногда нет. Я построил простую проверку URL-адресов, если они существуют, на веб-страницах. Но проблема в том, что даже URL-адрес точно существует (вручную проверял исходный код), file_get_contents и preg_match его не находят. Я не могу понять, почему. Вот код:

$page = $URL_that_should_be_checked;
$checkurl = str_replace("/", "\/", $checkurl);
$page = file_get_contents($userpage);
$checkurl = "/".$checkurl."/";
$report = preg_match($checkurl, $page);

Спасибо большое!!


person Crayl    schedule 04.08.2011    source источник


Ответы (4)


Попробуй это:

$page = file_get_contents($userpage);

$report = preg_match('/' . preg_quote($checkurl) . '/', $page);
person classic    schedule 04.08.2011
comment
Спасибо, я сделал тест и это решение. Но все еще не в моем основном сценарии. Проклятие :) - person Crayl; 05.08.2011
comment
Я думаю, вам нужно добавить журнал в ваш основной скрипт, чтобы выяснить причину неправильного результата. - person classic; 05.08.2011

Довольно сложно следовать вашему коду.

Вы проверили страницу документации и заметили, что могут потребоваться специальные символы для кодирования с помощью функции urlencode()?

В этой строке $checkurl = str_replace("/", "\/", $checkurl); переменная $checkurl не имеет определения.

В этой строке $userpage, похоже, не определено. В предоставленном вами коде определено только $page.

Похоже, вы проделали большую работу по настройке preg_match и $report его значения. Непонятно, почему вам нужно получить страницу во время этого процесса.

Кроме того, установлен ли у вас allow_url_fopen к истине? Вы получаете сообщения об ошибках?

person Richard    schedule 04.08.2011

Вы должны использовать PHP-функцию preg_quote для анализа URL-адреса вашей функции preg_match. Пример:

$checkurl = preg_quote($checkurl);

См.: http://php.net/manual/de/function.preg-quote.php

person scube    schedule 04.08.2011

Не уверен, что делает ваш код.

Вы делаете

$page = $URL_that_should_be_checked;

но двумя строками позже

$page = file_get_contents($userpage);

даже не установив $userpage.

person Marc B    schedule 04.08.2011