PHP-код, очищающий URL-адрес, внезапно перестал работать - PullRequest
0 голосов
/ 07 августа 2009
$url = 'the web address I want to get the first and second numbers close to $' ;
$str = file_get_contents($url);

preg_match_all('/ ([$]) *(\d+(:?.\d+)?)/', $str, $matches, PREG_SET_ORDER);

$i=0;
foreach ($matches as $val) {
    if($i==0) $first=$val[2] ;
    if($i==3) $second=$val[2] ;
    $i++;    
}
$bad_symbols = array(",", "."); $first = str_replace($bad_symbols, "", $first); 
$bad_symbols = array(",", "."); $second = str_replace($bad_symbols, "", $second); 

echo $first . "</br>";
echo $second;

до вчерашнего дня все работало нормально в чем может быть проблема?

Ответы [ 2 ]

3 голосов
/ 07 августа 2009

Я вижу как минимум два возможных объяснения:

  • HTML-код сайта изменился; может быть, только немного - но достаточно, чтобы доставить вам неприятности.
    • Вы можете проверить возвращаемое значение preg_match_all
    • если оно ложно, это означает, что ваше регулярное выражение не соответствует - что может указывать на то, что содержимое HTML-страницы не совпадает ...
    • Тогда вам, возможно, придется изменить свое регулярное выражение
  • Администратор сервера (или это можно сделать в коде, генерирующем страницу) забанил вас
    • Возможно, веб-сайт обнаружил, что вы его удалили (либо потому, что вы слишком усердно работали на их сервере, либо они увидели их содержимое на вашем сайте)
    • И они забанили ваш IP (например)
    • Чтобы обнаружить это, попробуйте получить возвращаемое значение file_get_contents; если это неверно, это может быть причиной проблемы
    • Можете ли вы попробовать получить эту HTML-страницу с вашего сервера, используя wget в командной строке?
  • Третий, как предлагают другие: возможно, изменилась конфигурация вашего сервера, и вы больше не можете использовать file_get_content по HTTP ...
    • Решением будет использование curl, например
    • Проверьте в вашей конфигурации директиву allow_url_fopen

Если вы активируете error_reporting ( см. Также ), вы также можете получить некоторую информацию, которая может оказаться полезной ...

0 голосов
/ 07 августа 2009

Возможно, системный администратор изменил директиву allow_url_fopen, это означает, что вы не можете получить доступ к файлам, которых нет на вашем сервере. Проверьте, что возвращает file_get_contents (), потому что вы дали нам очень мало информации об ошибке.

Другая проблема, как упоминалось выше, может заключаться в том, что удаленный сайт был изменен:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...