繁体   English   中英

用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修饰符(在正则表达式的末尾)来处理UTF-8


有关语法的信息, 请访问http://www.regular-expressions.info/unicode.html

Perl和PCRE不支持\\ uFFFF语法。 他们改用\\ x {FFFF}。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM