2010-04-01 50 views
1

例如:在这个域http://www.example.com/234234/go.html是只有一个iframe代码PHP的爆炸:如何下载和拆分特定的HTML部分?

我怎样才能在iframe代码中的网址?

go.html:

<iframe style="width: 99%;height:80%;margin:0 auto;border:1px solid grey;" src="i want this url" scrolling="auto" id="iframe_content"></iframe> 

我有这个片段中,但它非常糟糕的编码..

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; 
    } 

谢谢!

+0

我添加了一个不同的方法来回答你以前的问题:http://stackoverflow.com/questions/2563256/php-explode-and-get-url-not-showing-up-the-url/2563295# 2563295 – 2010-04-01 20:53:05

+0

为什么有两个问题? – 2010-04-01 21:01:10

回答

3

使用html解析器(如simple_html_dom)解析html。

$html = file_get_html('http://www.example.com/'); 

// Find all iframes 
foreach($html->find('iframe') as $element) 
    echo $element->src . '<br>'; 
+0

哇!相同的片段,相隔15秒。 :) – 2010-04-01 20:53:55

+0

谢谢,但simple_html_dom.php有36KB! :)这对于这个小功能来说很重要,还是有另一个更小的文件可以使用? – elmaso 2010-04-01 21:07:36

+0

php可以解析一个36kb的文件,比从磁盘读取文件要快;)相信我,在这种情况下,编程器速度比代码速度更重要。 – 2010-04-01 21:09:53

2

我不知道你在这里有什么范围 - 是这个片段还是你浏览整个页面?

如果您正在浏览整个页面,可以使用PHP Simple HTML DOM Parser。 稍微从他们的网站修改示例:

// Create DOM from URL or file 
$html = file_get_html('http://www.google.com/'); 

// Find all iframes 
foreach($html->find('iframe') as $element) 
     echo $element->style . '<br>'; 

此示例代码穿过页面上的所有iframes,然后输出它们src属性。

PHP也具有内置函数(如SimpleXML),但我发现DOM解析器非常好,并且易于处理(如您所见)。

+0

+1不错的答案;)但我打你3秒LOL – 2010-04-01 20:54:58

+0

是的,但那是因为我花时间实际插入链接到所需的库:D – 2010-04-01 21:07:29