我需要使用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>';)
。我怎样才能实现这一点?
答案 0 :(得分:1)
使用preg_match_all()
获取所有匹配项,而不仅仅是第一项。
$url = '<a title="Question" href="http://stackoverflow.com/questions/ask">t</a> <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