You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用正则表达式与preg_replace将@开头文本转为指定格式链接?

解决@开头文本转指定链接的正则替换问题

我来帮你搞定这个正则替换的需求!你需要把字符串中所有以@开头的文本转换成https://example.com/xxx格式的链接,用PHP的preg_replace完全可以实现,关键是写对正则表达式。

核心解决方案

我们可以用正则捕获@后面的目标内容,再替换成指定URL格式。这里分两种常见场景:

场景1:保留原字符串结构(链接与普通文本共存)

如果希望原字符串里的普通文本保留,仅将@开头的部分替换为链接,用下面的代码:

$originalStr = "@test hello how are you @abcdef";
// 正则匹配@开头的单词(字母、数字、下划线),捕获后面的内容
$regexPattern = '/@(\w+)/';
// 替换为目标URL,$1引用捕获到的内容
$replaceStr = 'https://example.com/$1';
$result = preg_replace($regexPattern, $replaceStr, $originalStr);

// 输出结果:https://example.com/test hello how are you https://example.com/abcdef
echo $result;

场景2:每个链接单独一行(和你给出的示例格式一致)

如果需要把每个转换后的链接单独换行,只需调整替换字符串,加上换行符即可:

$originalStr = "@test hello how are you @abcdef";
$regexPattern = '/@(\w+)/';
// 替换时添加换行符
$replaceStr = "https://example.com/$1\n";
$result = preg_replace($regexPattern, $replaceStr, $originalStr);

// 输出结果(自动去掉最后多余的换行):
// https://example.com/test
// https://example.com/abcdef
echo trim($result);

正则表达式说明

  • @:精确匹配@符号
  • (\w+):捕获@后面的一个或多个单词字符(包括字母、数字、下划线)。如果你的@开头内容可能包含连字符、点号等特殊字符,可以把\w换成自定义字符集,比如([a-zA-Z0-9-]+)(匹配字母、数字、连字符)或者([^\s]+)(匹配到下一个空格为止)
  • $1:在替换字符串中引用正则捕获到的第一个分组内容

扩展调整

如果你的@开头内容包含下划线、连字符这类特殊字符(比如@my-name_123),可以把正则改成:

$regexPattern = '/@([a-zA-Z0-9_-]+)/';

这样就能精准匹配这类带特殊符号的内容了。

内容的提问来源于stack exchange,提问作者Jim Johnson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 18:40:39