php - 当我在字符串开头使用表情符号时,正则表达式无法按预期工作
问题描述
我的代码是用PHP
. 我试图将我发送的电子邮件的主题存储在我的数据库中,只有在我删除了包含在这些电子邮件主题行中的表情符号之后。我创建了这个正则表达式:
$cleansubject = preg_replace("/[^a-zA-Z0-9\s]/", "", $subject);
当我在字符串末尾有表情符号时,它可以工作,例如:
但是,如果我在字符串的开头有表情符号,它就不起作用,该条目甚至没有存储在我的数据库中:
您可以在我的正则表达式中识别出任何问题以实现我想要的吗?
更新1:显然正则表达式很好:
解决方案
这可能是编码问题(3v4l 示例):
echo utf8_encode('⌨️,,, Learning Online: Digital Marketing Course');
// Output: ⌨ï¸,🖥,🖨, Learning Online: Digital Marketing Course
当您尝试使用您的模式进行匹配时,这会失败(请参阅此处),但是如果您匹配任意数量的非单词字符而没有像这里这样的全局标志,则您匹配整个表情符号。
使用preg_match()
它变成:
$re = '/\W*/';
$str = 'â¨ï¸,ð¥,ð¨, Learning online: Digital Marketing Course';
$subst = '';
$result = preg_replace($re, $subst, $str, 1);
echo "The result of the substitution is ".$result;
// Output: Learning online: Digital Marketing Course
推荐阅读
- c++ - 在类定义中注册成员变量
- azure-devops - 使用保管库机密进行 Azure DevOps 文件转换
- java - 基于预定义的 excel 模板创建 excel 工作表
- sql - 尝试插入 CSV 文件时出现 PyODBC 语法错误
- angular - 在 *ngIf 内部时,材料分页不起作用
- python - Elasticsearch 必须有多个条件
- automation - 如何在远程机器上以编程方式启动 WinAppDriver
- visual-studio-code - 如何使用命令 id 在 Visual Studio Code 的新文件名中添加文本?
- sql-server - 将数据插入到 ntext xml 列(无法在 ntext 错误上调用方法)
- angular - 从 Observable 返回布尔值的最简单方法