检索链接值表单<a href=""> tag using php</a>

时间:2012-12-26 06:20:08

标签: php html-parsing

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

<a href="http://stackoverflow.com/questions/ask"></a>

从上面的代码中我想使用php代码提取链接http://stackoverflow.com/questions/ask

4 个答案:

答案 0 :(得分:0)

有多种选择..

  • 如果你知道href将永远是a标签上的唯一属性,你可以使用strpos / stripos找到第一个和最后一个双引号的位置,并使用substr来拉出href。
  • 或者,即使有多个属性,strpos / stripos也会接受从哪里开始搜索字符串的偏移量。如果你在href之后开始,你可以像上面那样做。
  • 或者,您可能会更好地使用也找到href并从那里开始的正则表达式。
  • 最后,如果这是您正在迭代的正确形成的XHTML文档的一部分,您可以使用SimpleXML迭代数组并获取所需的每个属性。

根据提供的有限信息,我将从第一个或第二个选项开始,只有在混合中有其他要求时才会转到正则表达式或SimpleXML。

答案 1 :(得分:0)

如果您已经拥有锚标记并且只想获取href值,请尝试此代码。除了'href'值之外,它将删除其他值。唯一的问题是'href'这个词不能在'href'属性的id / class前面。

$url = '<a href="http://stackoverflow.com/questions/ask"></a>';
$url =  substr ( $url,(strpos($url,' href=') + 6) );
$url = explode($url[0],$url);
echo $url[1]; // $url[1] will store the 'http://stackoverflow.com/questions/ask'

答案 2 :(得分:0)

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

答案 3 :(得分:-2)

除非链接是由PHP代码本身生成的,否则不能这样做。 PHP是服务器端代码,而页面本身的链接是HTML客户端代码。两者无法相互沟通。要提取值,您需要使用像JavaScript这样的客户端脚本。