PHP Explode和Get_Url:不显示URL

时间:2010-04-01 19:56:31

标签: php explode geturl

有点难以理解。

在header.php中的

我有这个代码:

<?
$ID = $link;
$url = downloadLink($ID);
?>

我通过此可变$链接获取ID - &gt; 12345678 并使用$ url我从functions.php获取完整链接

在functions.php中我有这个片段

function downloadlink ($d_id)
  {
    $res = @get_url ('' . 'http://www.example.com/' . $d_id . '/go.html');
    $re = explode ('<iframe', $res);
    $re = explode ('src="', $re[1]);
    $re = explode ('"', $re[1]);
    $url = $re[0];
    return $url;
  } 

通常会打印出网址..但是,我无法理解代码..

1 个答案:

答案 0 :(得分:1)

它是用一种奇怪的方式写的,但基本上downloadLink()的作用是这样的:

  1. http://www.example.com/<ID>/go.html
  2. 下载HTML
  3. 获取HTML,并在字符串<iframe出现的每个位置拆分。
  4. 现在接受HTML中第一个 <iframe之后的所有内容,并在字符串src="出现的每个位置拆分。
  5. 现在取出第一个src="之后的所有内容,然后在出现"的每个位置拆分它。
  6. 返回之前的 第一个"
  7. 所以这是一种相当糟糕的方式,但实际上它会在HTML代码中首次出现这种情况:

    <iframe src="<something>"
    

    并返回<something>

    编辑:另一种方法,如评论中所要求的

    实际上没有任何特定的“正确”方法,但一种相当直接的方法是将其改为:

    function downloadlink ($d_id)
    {
        $html = @get_url ('' . 'http://www.example.com/' . $d_id . '/go.html');
        preg_match('/\<iframe src="(.+?)"/', $html, $matches);
        return $matches[1];
    }