基本上,我试图使用 preg_match 查找所有带有 PDF 附件的链接,然后将整个 url 添加到一个数组中。我正在努力解决的部分是如何在比赛前选择所有内容,直至 <a href="">
的“引号”。 .我想这样做,以便我可以遍历数组并对每个文档执行任何我需要的操作。我只想以'1234.pdf'
结束(加上任何子目录信息)在数组中。
有什么想法吗?
这是我目前所拥有的,它只返回匹配...
$string1 = "<a href='1234.pdf'>Document 1</a>";
$match = preg_match("/.pdf/i", $string1, $output);
谢谢
最佳答案
您应该使用 DOM 解析器来提取该信息,因为它更容易,也更安全。然后你可以使用 preg_match
来检查链接是否真的是 PDF:
$html = '<a href="foo.pdf">Foo</a>'.
'<a href="bar.jpg">Bar</a>'.
'<a href="baz.pdf">Baz</a>';
$dom = new DOMDocument;
$dom->loadHTML($html);
$links = $dom->getElementsByTagName('a');
$result = array();
foreach ($links as $link) {
$href = $link->getAttribute('href');
if (preg_match('/\.pdf$/i', $href)) $result[] = $href;
}
print_r($result);
输出:
Array
(
[0] => foo.pdf
[1] => baz.pdf
)
关于PHP 预匹配。添加到数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4433340/