gpt4 book ai didi

PHP - preg_replace 反向引用

转载 作者:行者123 更新时间:2023-12-04 03:00:03 27 4
gpt4 key购买 nike

我在理解如何使用带有反向引用的 preg_replace 时遇到了很大的问题。

我有一个纯文本字符串,想用链接的 HTML 语法替换每个链接。因此,“www.mydomain.tld”或“http://www.mydomain.tld”或“http://mydomain.tld”应该包含在 HTML a 标签中。我找到了一个可以在线执行此操作的功能,但我想了解如何自己执行此操作。

在我找到的函数中,这是替换:

"\\1<a href=\"http://\\2\" target=\"_blank\" rel=\"nofollow\">\\2</a>"

我在那里看到一些转义引号和这些位:\\1 \\2
根据 PHP 文档,这些是反向引用。但是我如何使用它们,它们有什么作用?

我在规范中没有发现任何相关内容,因此非常感谢任何帮助!

最佳答案

这将为您完成这项工作。请参阅下文了解其工作原理。

$string = 'some text www.example.com more text http://example.com more text https://www.example.com more text';

$string = preg_replace('#\b(?:http(s?)://)?((?:[a-z\d-]+\.)+[a-z]+)\b#', "<a href='http$1://$2'>http$1://$2</a>", $string);

echo $string; // some text <a href='http://www.example.com'>http://www.example.com</a> more text <a href='http://example.com'>http://example.com</a> more text <a href='https://www.example.com'>https://www.example.com</a> more text

\b 匹配字边界(?:http(s?)://)? 可选择匹配包含 'http://''https://'< 的字符串,如果 https 获取 ,那么我们可以构建正确的 URL

(?:[a-z\d-]+\.)+ 匹配一个或多个后跟句点的一系列字母/数字

[a-z]+ 匹配一系列字母的一次或多次出现,TLD,请注意 TLD 现已开放购买,因此不能再限制长度。见http://tinyurl.com/cle6jqb

然后,除了 之外,我们还通过将它们括在括号中来捕获最后两个部分。

然后我们构建 URL:

<a href='http$1://$2'>http$1://$2</a>

http$1:// 创建 HTTP 如果 HTTPS 反向引用 $1 将包含一个 's'

$2 将包含域名。我们将 URL 所在的链接设为链接文本。

关于PHP - preg_replace 反向引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15047282/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com