<!-- This Div repeated in HTML with different properties value -->
<div style="position:absolute; overflow:hidden; left:220px; top:785px; width:347px; height:18px; z-index:36">
<!-- Only Unique Thing is This in few pages -->
<a href="http://link.domain.com/?id=123" target="_parent">
<!-- OR in some pages Only Unique Thing is This, ending with mp3 extension -->
<a href="http://domain.com/song-title.mp3" target="_parent">
<!-- This Div also repeated multiple in HTML -->
<FONT style="font-size:10pt" color=#000000 face="Tahoma">
<DIV><B>Harjaiyaan</B> - Nandini Srikar</DIV>
</FONT>
</a>
</DIV>
我们有非常脏的html标记,它由某些程序或应用程序生成。我们希望从此代码中提取“Urls”以及“Text”。
在href
中我们使用了两种类型的网址:网址1模式:“http://link.domain.com/id=123”,网址2模式:“http://domain.com/sons-title.mp3”
在第一场比赛中,我们是特定的模式但是在第二个网址中我们没有模式只是以“.mp3”扩展名结尾的网址。
是否有一些函数可以从这个模式和文本代码中提取url
?
注意:没有DOM,有没有办法匹配href以及文本与正则表达式之间? preg_match?
答案 0 :(得分:2)
使用DOMDocument
Class并按此完成。
$dom = new DOMDocument;
$dom->loadHTML($html); //<------- Pass ur HTML source here
foreach ($dom->getElementsByTagName('a') as $tag) {
echo $tag->getAttribute('href');
echo $tag->nodeValue; // to get the content in between of tags...
}
答案 1 :(得分:1)
扩展@Shankar Damodaran的回答:
$html = file_get_contents('source.htm');
$dom = new DOMDocument;
$dom->loadHTML($html);
foreach ($dom->getElementsByTagName('a') as $tag) {
if (strstr($tag->getAttribute('href'),'?id=') !== false) {
echo $tag->getAttribute('href') . "<br>\n";
}
}
然后为MP3做同样的事情:
$html = file_get_contents('source.htm');
$dom = new DOMDocument;
$dom->loadHTML($html);
foreach ($dom->getElementsByTagName('a') as $tag) {
if (strstr($tag->getAttribute('href'),'.mp3') !== false) {
echo $tag->getAttribute('href') . "<br>\n";
}
}