检测html页面上的mp3链接

时间:2013-12-29 04:35:55

标签: php html dom

我想从html网页上找到并打印所有mp3链接。

<a href="http://example1.com">Test 1</a>
<a href="http://example2.com/page.html">Test 2</a>
<a href="http://example3.com/link/file2.mp3">mp3 link 2</a>
<a href="http://example3.com/link/file3.mp3">mp3 link 3</a>

我现在使用php的HTML代码我想在我的网页上打印这两个mp3链接,所以请帮助我。我认为DOM可以帮助我,但我不知道如何?你可以使用DOM或其​​他。谢谢你

清楚 -

$dom = new DomDocument();
$dom->loadHTML($html);
$urls = $dom->getElementsByTagName('a');
$regexp = "<a\s[^>]*href=(\"??)([^\" >]*?)\\1[^>]*>(.*)<\/a>";
if(preg_match_all("/$regexp/siU", $urls, $matches, PREG_SET_ORDER))
{ foreach($urls as $match)
{// $match[2] = link address
// $match[3] = link text}
}

那将打印所有链接,但我想打印一个有.mp3远征的链接。我想现在已经很清楚了。所以请帮忙

2 个答案:

答案 0 :(得分:3)

这样做......

<?php
$html='<a href="http://example1.com">Test 1</a>
<a href="http://example2.com/page.html">Test 2</a>
<a href="http://example3.com/link/file2.mp3">mp3 link 2</a>
<a href="http://example3.com/link/file3.mp3">mp3 link 3</a>';
$dom = new DOMDocument;
$dom->loadHTML($html);
foreach ($dom->getElementsByTagName('a') as $tag) {
        if(strpos($tag->getAttribute('href'),'.mp3')!==false)
        {
            echo $tag->getAttribute('href')."<br>";
        }

}

输出:

http://example3.com/link/file2.mp3
http://example3.com/link/file3.mp3

答案 1 :(得分:1)

使用CSS3,你可以使用像

这样的选择器选择这样的元素
a[href$=mp3]

jQuery中的类似内容是您正在寻找的东西。

我在这里创建了一个小提琴:http://jsfiddle.net/myTerminal/Q4D9n/ 该变量包含您要查找的链接数组。