检索<a href=""> tag using php</a>的多个值

时间:2014-11-19 05:55:24

标签: php

我需要使用php代码提取存储在<a>标记中的链接值。

我使用下面的代码

$url = '<a title="Question" href="http://stackoverflow.com/questions/ask">t</a>';
preg_match("/href=\"(.*?)\"/i", $url, $matches);
print_r($matches);

使用上面的代码,我可以获得单个href的值。但它不适用于字符串中的多个href(即$url = '<a title="Question" href="http://stackoverflow.com/questions/ask">t</a><a href="x.php">x</a>';)。我怎样才能实现这一点?

2 个答案:

答案 0 :(得分:1)

使用preg_match_all()获取所有匹配项,而不仅仅是第一项。

$url = '<a title="Question" href="http://stackoverflow.com/questions/ask">t</a>&nbsp;<a href="x.php">x</a>';
preg_match_all("/href=\"(.*?)\"/i", $url, $matches);
print_r($matches);

答案 1 :(得分:1)

使用DOM解析器,这个例子可以帮助您:

<?php
$doc = new DOMDocument();
$doc->loadHTML('<a title="Question" href="http://stackoverflow.com/questions/ask">t</a>');

$elm = $doc->getElementsByTagName('a')->item(0);

foreach ($elm->attributes as $attr) {
    echo $attr->name . ' ' . $attr->value . '<br>';
}

echo "Directly getting href: " . $elm->attributes->getNamedItem('href')->value;

输出:

title Question
href http://stackoverflow.com/questions/ask
Directly getting href: http://stackoverflow.com/questions/ask 

演示:http://viper-7.com/EN1Usi

文档:http://php.net/manual/en/class.domdocument.php