我正在使用php并且包含content =
的字符串 <a href="www.something.com">Click here</a>
除了“www.something.com”,我需要摆脱一切 我假设这可以用正则表达式完成。 任何帮助表示赞赏! 谢谢
答案 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.');
这有用吗?