PHP 从 中提取链接标签

发布于 2024-11-16 01:13:46 字数 339 浏览 3 评论 0原文

可能的重复:
PHP 字符串操作:提取 href

我正在使用 php,并且字符串内容为

单击此处

我需要删除除“www.something.com”之外的所有内容 我认为这可以通过正则表达式来完成。 任何帮助表示赞赏! 谢谢

Possible Duplicate:
PHP String Manipulation: Extract hrefs

I am using php and have string with content =

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

I need to get rid of everything except "www.something.com"
I assume this can be done with regular expressions.
Any help is appreciated!
Thank you

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

春夜浅 2024-11-23 01:13:46

使用 SimpleXML 可以很容易地做到这一点:

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

This is very easy to do using SimpleXML:

$a = new SimpleXMLElement('<a href="www.something.com">Click here</a>');
echo $a['href']; // will echo www.something.com
戏剧牡丹亭 2024-11-23 01:13:46

尝试一下:

$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

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

Give this a whirl:

$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];
}

Result: www.something.com

Updated: Now requires the quoting style to match, addressing the comment below.

屌丝范 2024-11-23 01:13:46

我建议使用以下代码:

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

OUTPUT

www.something.com

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

I would suggest following code for this:

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

OUTPUT

www.something.com

This will take care of both single quote ' and double quote " in the href link.

靖瑶 2024-11-23 01:13:46

假设这总是变量的格式,下面应该可以解决问题。如果内容不是链接,则此操作将不起作用。本质上,它查找包含在两个引号内的数据。

<?php

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

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

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

Assuming that is ALWAYS the format of the variable, below should do the trick. If the content may not be a link, this won't work. Essentially it looks for data enclosed within two quotations.

<?php

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

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

preg_match($pattern, $string, $matches);
print_r($matches);
?>
浮世清欢 2024-11-23 01:13:46

也许您的问题并不那么简单,但这正是您所要求的:

$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.');

这有帮助吗?

As probably you didn't meant your question that easy, but this does exactly what you're asking for:

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

$href is:

string(17) "www.something.com"

As a regular expression it can be expressed it as this is:

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

Is this helpful?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文