多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
下面是网上搜索关于正则表达式匹配中文的常见版本。 ``` js /[\u4e00-\u9fa5]+/ php /[\x7f-\xff]+/ ``` 今天这里主要是针对php的版本做下扩展,其实,php版本也是能利用js那个版本进行匹配的。 很多人可能已经写过并遇到了这个报错: Warning: preg_match_all(): Compilation failed: PCRE does not support \L, \l, \N{name}, \U, or \u at offset 2 那么,我们要怎么解决呢? 很简单,就是这样: ``` /[\x{4e00}-\x{9fa5}]+/u ``` 因此,想要利用php匹配中文,有两种写法: ``` /[\x7f-\xff]+/ ``` 和 ``` /[\x{4e00}-\x{9fa5}]+/u ``` 下面是一段是用php运行正则测试代码的例子,有兴趣的朋友可以看看运行结果(本文由 www.uuhuihui.com 整理): ``` <?php //临时启用全局错误提示 ini_set('display_errors', true); error_reporting(E_ALL); $linkeBreak = (PHP_SAPI == 'cli') ? "\n" : '<br>'; $str = '中文汉字English'; $patternArr = array( '/[\u4e00-\u9fa5]+/', '/[\x{4e00}-\x{9fa5}]+/u', '/[\x7f-\xff]+/', ); foreach($patternArr as $pattern) { echo "Pattern: {$pattern} {$linkeBreak}"; var_dump(testRegexpMatch($pattern, $str)); echo $linkeBreak; } /** * 测试正则匹配 * @param string $pattern 正则表达式 * @param string $string 源字符串 * @return array */ function testRegexpMatch($pattern, $string) { try { preg_match_all($pattern, $string, $matches); } catch (Exception $e) { return array( 'stauts' => false, 'msg' => $e->getMessage(), 'matches' => array(), ); } return array( 'stauts' => true, 'msg' => 'Success', 'matches' => $matches, ); } ```