用PHP编写Javascript UTF正则表达式

Writing Javascript UTF Regular Expression in PHP

本文关键字:UTF 正则表达式 Javascript 编写 PHP      更新时间:2023-09-26

我需要在PHP中重写这个javascript正则表达式,以便与preg_replace:一起使用

var PATTERN = /(['ud800-'udbff])(['udc00-'udfff])/g;

如果我使用:

$strText = preg_replace("/(['ud800-'udbff])(['udc00-'udfff])/", "emoji", $strText);

我得到:

编译失败:PCRE在偏移量3 处不支持''L、''L、''N{name}、''U或''U

尝试以下操作:

preg_replace("/(['x{d800}-'x{dbff}])(['x{dc00}-'x{dfff}])/u", "emoji", $strText);

PCRE不支持'uXXXX格式,因此可以使用'x{XXXX}。此外,您还需要u修饰符(位于regex末尾)来处理UTF-8


中的语法信息http://www.regular-expressions.info/unicode.html

Perl和PCRE不支持''uFFFF语法。他们使用''x{FFFF}相反

有关u修饰符的信息,来自http://php.net/manual/en/reference.pcre.pattern.modifiers.php

u(PCRE_UTF8)此修饰符打开PCRE的附加功能这与Perl不兼容。模式字符串和主题字符串处理为UTF-8。此修饰符可从PHP 4.1.0或更高版本获得在Unix上和从PHP 4.2.3在win32上。模式的UTF-8有效性和该主题自PHP 4.3.5开始检查。无效主题将导致preg_*函数不匹配;将触发无效的模式E_ WARNING级别的错误。五个和六个八位字节的UTF-8序列是自PHP 5.3.4起被视为无效(分别为PCRE 7.3 2007-08-28);以前,这些都被认为是有效的UTF-8。