PHP开发@提及系统时如何用正则从字符串中提取client:id类标识
PHP提取@提及标识实现方案
你可以通过PHP内置的preg_match_all函数配合正则表达式实现需求,完整实现逻辑如下:
实现思路
你的@提及格式固定为@[展示文本](标识内容),只需要通过正则捕获括号内的client:数字格式内容即可,匹配过程会自动识别文本中所有符合规则的标识,不需要手动遍历处理。
完整代码示例
// 待处理的原始文本 $rawContent = "This is my text how do you like it @[John Doe (#6)](client:6) and do you have any thoughts @[Jane Doe (#7)](client:7)"; // 正则匹配规则:精准匹配@[xxx](client:数字)结构,捕获目标标识 $pattern = '/@\[.+?\]\((client:\d+)\)/'; // 执行全局匹配 preg_match_all($pattern, $rawContent, $matchResult); // 提取结果数组,$matchResult[1] 存储了所有匹配到的标识 $mentionList = $matchResult[1]; // 测试输出 print_r($mentionList);
输出结果
执行后得到的$mentionList就是你需要的格式:
Array ( [0] => client:6 [1] => client:7 )
拓展说明
如果后续需要支持其他前缀的标识(比如user:12、group:3等),只需要把正则中的client替换为适配规则即可,比如适配所有小写字母前缀的规则为/@\[.+?\]\(([a-z]+:\d+)\)/。
内容的提问来源于stack exchange,提问作者Christian
相关产品推荐
相关产品推荐

