CURL альтернатива встроенной функции file_get_contents () - PullRequest
2 голосов
/ 10 июня 2011

Итак, насколько я понимаю, это должно быть довольно просто, так как мне нужно только изменить исходный код содержимого файлового файла, а остальная часть сценария все еще должна работать?Я закомментировал старый файл получить содержимое и добавил скручивание ниже.

после перехода из файла получить содержимое на cURL код ниже не выводит

    //$data = @file_get_contents("http://www.city-data.com/city/".$cityActualURL."-".$stateActualURL.".html");
//$data = file_get_contents("http://www.city-data.com/city/Geneva-Illinois.html");

//Initialize the Curl session
$ch = curl_init();
$url= "http://www.city-data.com/city/".$cityActualURL."-".$stateActualURL.".html";
//echo "$url<br>";
 $ch = curl_init();
  $timeout = 5;
  curl_setopt($ch,CURLOPT_URL,$url);
  curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
  curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);
  $data = curl_exec($ch);
  curl_close($ch);
//echo $data;

$details = str_replace("\n", "", $data);
$details = str_replace("\r", "", $details);


$detailsBlock = <<<HTML
~<div style='clear:both;'></div><br/><b>(.*?) on our <a href='http://www.city-data.com/top2/toplists2.html'>top lists</a>: </b><ul style='margin:10px;'>(.*?)<div style='bp_bindex'>~
HTML;

$detailsBlock2 = <<<HTML
~<br/><br/><b>(.*?) on our <a href='http://www.city-data.com/top2/toplists2.html'>top lists</a>: </b><ul style='margin:10px;'>(.*?)</ul></td>~
HTML;

$detailsBlock3 = <<<HTML
~<div style='clear:both;'></div><br/><b>(.*?) on our <a href='http://www.city-data.com/top2/toplists2.html'>top lists</a>: </b><ul style='margin:10px;'>(.*?)</ul></td>~
HTML;

preg_match($detailsBlock, $details, $matches);
preg_match($detailsBlock2, $details, $matches2);
preg_match($detailsBlock3, $details, $matches3);

if (isset($matches[2]))
{
    $facts = "<ul style='margin:10px;'>".$matches[2];
}

elseif (isset($matches2[2]))
{
    $facts = "<ul style='margin:10px;'>".$matches2[2];
}

elseif (isset($matches3[2]))
{
    $facts = "<ul style='margin:10px;'>".$matches3[2];
}

else
{
    $facts = "More Information to Come...";
}

Ответы [ 2 ]

1 голос
/ 15 октября 2012

Следующая функция прекрасно работает, просто передайте ей URL.

function file_get_data($url) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //Set curl to return the data instead of printing it to the browser.
    curl_setopt($ch, CURLOPT_URL, $url);
    $data = curl_exec($ch);
    curl_close($ch);
    return $data;
}

СОВЕТ: новые строки и возврат каретки можно заменить одной строкой кода.

 $details = str_replace(array("\r\n","\r","\n"), '', $data);
1 голос
/ 11 июня 2011

Если у вас есть проблема с вашим скриптом, вам нужно отладить его. Например:

$data = curl_exec($ch);
var_dump($data); die();

Тогда вы получите вывод, что такое $data. В зависимости от выходных данных вы можете далее решить, где искать причину неисправности.

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