使用Curl获取远程页面源如何根据其编号仅回显一行代码

时间:2013-05-08 14:24:46

标签: php html regex curl

我正在使用远程页面的源代码获取该远程页面的url,它是根据数组array('event_id', 'tv_id', 'tid', 'channel')从用户点击的url动态获取的:我使用下面的代码来获取谁; e页面源代码,效果很好。

<?php
$keys = array('event_id', 'tv_id', 'tid', 'channel'); // order does matter
$newurl = 'http://lsh.streamhunter.eu/static/popups/';
foreach ($keys as $key)
    $newurl.= empty($_REQUEST[$key])?0:$_REQUEST[$key];

$newurl.='.html';
    function get_data($newurl) 
    { 
       $ch = curl_init();
       $timeout = 5;
       //$userAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US)AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.X.Y.Z Safari/525.13.";
       $userAgent = "IE 7 – Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)";
      curl_setopt($ch, CURLOPT_USERAGENT, $userAgent);
      curl_setopt($ch, CURLOPT_FAILONERROR, true);
      curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
      curl_setopt($ch, CURLOPT_AUTOREFERER, true);
      curl_setopt($ch, CURLOPT_TIMEOUT, 10);
      curl_setopt($ch,CURLOPT_URL,$newurl);
      curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
      curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);
      $data = curl_exec($ch);
      curl_close($ch);
      return $data;

    }

    $html = get_data($newurl);

    echo $html

?>

这里的技巧是我想只回显第59行的代码 该怎么做?

3 个答案:

答案 0 :(得分:0)

在您的代码中,您使用file_get_contents而不是get_data函数,因此我将其从示例中删除。

<?php
    $keys = array('event_id', 'tv_id', 'tid', 'channel'); // order does matter
    $newurl = 'http://lsh.streamhunter.eu/static/popups/';
    foreach ($keys as $key)
        $newurl.= empty($_REQUEST[$key])?0:$_REQUEST[$key];

    $newurl.='.html';


    $html = file_get_contents($newurl);
    $html = explode("\n",$html);
    echo $html[58];

?>

答案 1 :(得分:0)

您可能希望使用php函数file将文件读入数组,然后使用其索引。

$html = file($newurl);

echo $html[58];

答案 2 :(得分:0)

如果您想准确获取从$newurl返回的数据的第59行,并且您并不担心它是那么大,那么您可以使用file($newurl)[58]

如果您正在讨论来自curl的数据,则可以使用explode("\n", $data)来获取类似的数据。