Web サイトからすべてのリンクを抽出するこのコードがあります。.mp3 で終わるリンクのみを抽出するように編集するにはどうすればよいですか? 次のコードは次のとおりです。
preg_match_all("/\<a.+?href=(\"|')(?!javascript:|#)(.+?)(\"|')/i", $html, $matches);
Web サイトからすべてのリンクを抽出するこのコードがあります。.mp3 で終わるリンクのみを抽出するように編集するにはどうすればよいですか? 次のコードは次のとおりです。
preg_match_all("/\<a.+?href=(\"|')(?!javascript:|#)(.+?)(\"|')/i", $html, $matches);
アップデート:
良い解決策は、コメントで @zerkms が述べたように、XPathと一緒にDOMを使用することです。
$doc = new DOMDocument();
$doc->loadHTML($yourHtml);
$xpath = new DOMXPath($doc);
// use the XPath function ends-with to select only those links which end with mp3
$links = $xpath->query('//a[ends-with(@href, ".mp3")]/@href');
元の回答:
これには DOM を使用します。
$doc = new DOMDocument();
$doc->loadHTML($yourHtml);
$links = array();
foreach($doc->getElementsByTagName('a') as $elem) {
if($elem->hasAttribute('href')
&& preg_match('/.*\.mp3$/i', $elem->getAttribute('href')) {
$links []= $elem->getAttribute('href');
}
}
var_dump($links);