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

PHP正则表达式:在哈希标签链接中包含表情符号及特殊字符

解决带表情符号的哈希标签链接中断问题

你的正则仅允许匹配字母、数字、@和下划线,遇到表情符号时会停止匹配,导致包含表情的哈希标签无法被完整转换为链接。

修改后的代码如下:

$str = "#John_Smith  #💥DanielCarter and #Jack🙂Foster are the good programmers";

// 整合表情匹配规则到正则中,并开启Unicode模式
$regex = '/#+((?:[a-zA-Z0-9@_]|\x{00a9}|\x{00ae}|[\x{2000}-\x{3300}]|\x{d83c}[\x{d000}-\x{dfff}]|\x{d83d}[\x{d000}-\x{dfff}]|\x{d83e}[\x{d000}-\x{dfff}])+)/u';

$string = preg_replace($regex, '<a href="user_page.php?userName=$1">$0</a>', $str);

关键修改说明

  • 添加/u修饰符:开启Unicode模式,确保正则能正确识别Unicode表情符号(包括由两个码点组成的代理对表情)。
  • 扩展匹配字符集:将你提供的表情正则规则整合到捕获组中,让正则可以匹配包含表情的完整用户名部分。
  • 使用非捕获组(?:...):把原有合法字符和表情规则包裹为一个整体,保证整个哈希标签(包括中间的表情)被完整捕获,不会在表情处中断。

转换后,#💥DanielCarter会被完整转为<a href="user_page.php?userName=💥DanielCarter">#💥DanielCarter</a>,#Jack🙂Foster会转为<a href="user_page.php?userName=Jack🙂Foster">#Jack🙂Foster</a>,符合预期需求。

内容的提问来源于stack exchange,提问作者The Eagle

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 01:20:21