PHP 正则表达式去除所有表情符号

标签 php regex emoji

我正在尝试使用正则表达式从字符串中去除所有不允许的字符。这是我当前的 php 代码

$input = "👮";

$pattern = "[a-zA-Z0-9_ !@#$%^&*();\\\/|<>\"'+\-.,:?=]";
$message = preg_replace($pattern,"",$input);

if (empty($message)) {
    echo "The string is empty";
}
else {
    echo $message;
}

当我运行它时,当我想要它打印出“字符串为空”时,表情符号被打印出来。

当我将正则表达式代码放入 http://regexr.com/ 时它显示表情符号不匹配,但是当我运行代码时它被打印出来了。有什么建议吗?

最佳答案

这个模式应该可以解决问题:

$filteredString = preg_replace('/([^-\p{L}\x00-\x7F]+)/u', '', $rawString);

有些序列非常罕见,所以让我们解释一下:

  • \p{L} 匹配来自任何语言的任何类型的字母
  • \x00-\x7F(索引 0)和(索引 127)之间范围内的单个字符(区分大小写)
  • u 修饰符,用于打开与 Perl 不兼容的 PCRE 附加功能。模式和主题字符串被视为 UTF-8。

关于PHP 正则表达式去除所有表情符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34235995/

相关文章:

ios - 将表情符号编码为字符串

php - Paypal 订阅 "custom"变量问题(沙盒)

php - 使用 PHP 显示 mySQL 结果的顺序

php - 如何修复 CakePHP 中的 "Error: The view for SrcController::view() was not found."?

php - 向客户添加 PDF - laravel 5.7

php - 正则表达式在线替换组后的所有空格

regex - TSQL 也允许匹配来自字符串的右方括号

ruby-on-rails - 如何从 Rails 中的字符串中识别一组日期

python - Python 中的表情符号

c - 为什么我不能使用 Symbola 字体在 Pebble 上显示表情符号?