[英]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.