用PHP编写Javascript UTF正则表达式
Writing Javascript UTF Regular Expression in PHP
我需要在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。
相关文章:
- java.net和javascript之间正则表达式的差异
- Grunt匹配正则表达式
- 不同浏览器中的空白字符正则表达式行为
- 正则表达式在字符串中找到base64
- 子字符串/正则表达式以获取字符串中保存的 SRC 值
- 调用正则表达式匹配的函数
- 使用正则表达式评估电子邮件地址时出现性能问题
- Javascript 正则表达式 : ^[^/s/]+[a-z]{1,}[0-9]*[-_]*[^/][
- JavaScript正则表达式文本与RegExp对象
- 正则表达式只允许 x 个整数
- 使用正则表达式将输入格式设置为单字符逗号、单字符逗号等
- 改进用于验证付款金额的正则表达式
- 正则表达式与数字中的第二个点匹配
- 键按正则表达式以查找具有负值的小数
- 一个正则表达式,用于从JS中的HTML标记中删除id、样式和类属性
- 不能将 UTF-8 字符替换为正则表达式
- 正确的正则表达式来查找和替换转义的 UTF-8 字符串
- 用PHP编写Javascript UTF正则表达式
- 用于验证UTF-8的正则表达式只包含"normal"字符
- 包含UTF-8字符的字符串的Javascript正则表达式问题