如何修改PHP正则代码实现URL转超链接仅显示域名+.com
修改方案
要实现超链接仅显示域名+.com后缀的需求,需调整正则的捕获组逻辑,单独提取目标显示文本,修改后的代码如下:
$text_with_links = preg_replace( "/(?<!a href=\")(?<!src=\")((http|ftp)s?:\/\/)((www\.)?[^\s\/.]+\.com)/i", "<a href=\"\\1\\3\" target=\"_blank\">\\3</a>", $text );
关键修改细节
- 正则拆分出核心捕获组:
\\1:匹配完整的协议部分(如https://)\\3:精准捕获要显示的域名内容,支持www.example.com或example.com两种格式
- 替换时,
href使用完整URL拼接结果,显示文本直接调用捕获到的域名组\\3 - 修正了原代码中
target="blank"的语法错误,正确写法为target="_blank"
匹配规则说明
(www\.)?:可选匹配www.前缀[^\s\/.]+:匹配域名主体(排除空格、斜杠、点等干扰字符)\.com:锁定.com后缀- 保留原有的负向断言,避免重复处理已存在的
<a>标签或图片src链接
内容的提问来源于stack exchange,提问作者Chris
相关产品推荐
相关产品推荐

