PHP 预匹配。添加到数组

标签 php arrays preg-match

基本上,我试图使用 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/

相关文章:

php - SimpleXML:将XML属性值添加到数组

php - Preg 匹配所有字符

php - 如何优化 MySQL (CentOS)

php - php中查询sql的语法

javascript - 如何使用 javascript 将字典数组更改为表示数组中两个属性组合的子列表列表?

php - 用于匹配传递的函数/方法参数的正则表达式

php - 反转 "English"字造句

php - 如何在 laravel 中显示点值

javascript - PHP 将多个带有标题的文件上传到 MySQL

java - 如何使用格式化程序格式化二维数组之和?