PHP从<a> tag</a>中提取链接

时间:2011-06-15 23:42:31

标签: php string hyperlink extract href

  

可能重复:
  PHP String Manipulation: Extract hrefs

我正在使用php并且包含content =

的字符串

<a href="www.something.com">Click here</a>

除了“www.something.com”,我需要摆脱一切 我假设这可以用正则表达式完成。 任何帮助表示赞赏! 谢谢

5 个答案:

答案 0 :(得分:40)

使用SimpleXML非常容易:

$a = new SimpleXMLElement('<a href="www.something.com">Click here</a>');
echo $a['href']; // will echo www.something.com

答案 1 :(得分:16)

给它一个旋转:

$link = '<a href="www.something.com">Click here</a>';
preg_match_all('/<a[^>]+href=([\'"])(?<href>.+?)\1[^>]*>/i', $link, $result);

if (!empty($result)) {
    # Found a link.
    echo $result['href'][0];
}

结果:www.something.com

更新:现在需要引用样式匹配,解决以下评论。

答案 2 :(得分:3)

我建议使用以下代码:

$str = '<a href="www.something.com">Click here</a>';
preg_match('/href=(["\'])([^\1]*)\1/i', $str, $m);
echo $m[2] . "\n";

输出

www.something.com

这将在href链接中处理单引号'和双引号"

答案 3 :(得分:1)

假设总是变量的格式,下面应该可以做到。如果内容可能不是链接,则无效。基本上它会查找包含在两个引号内的数据。

<?php

$string = '<a href="www.something.com">Click here</a>';

$pattern = '/"[a-zA-Z0-9.\/\-\?\&]*"/';

preg_match($pattern, $string, $matches);
print_r($matches);
?>

答案 4 :(得分:0)

可能你并不认为你的问题很简单,但这正是你所要求的:

$link = '<a href="www.something.com">Click here</a>';
$href = substr($link, 9, -16);

$href是:

string(17) "www.something.com"

作为正则表达式,它可以表达为:

$href = preg_match('(^<a href="([^"]*)">Click here</a>$)', $link, $matches) ? $matches[1] : die('Invalid input data.');

这有用吗?