PHP中PCRE正则解析代码详解


Posted in PHP onApril 26, 2019

一、前言

前面的博客里,有对字符集的解析。这里就不是字符集的事儿了,在PHP中很多函数的处理默认是unicode中的UTF-8编码格式。那么废话不多说,直接开始正题。

二、PHP函数mb_split解析

<?php
$preg_strings = '测、试、一、下';
$preg_str = mb_split('、', $preg_strings);
print_r($preg_str);

输出效果

Array(

  [0] => 测

  [1] => 试

  [2] => 一

  [3] => 下)

此函数默认底层解析,以UTF-8的编码格式解析。以分隔符(、)的UNICODE的16进制码点分割字符$preg_strings。

三、PHP函数preg_split解析

分割字符串“测试一下”

<?php
$strings = '测试一下';
$mb_arr = preg_split('//u', $strings, -1, PREG_SPLIT_NO_EMPTY);
print_r($mb_arr);

打印结果如下:

Array(

  [0] => 测

  [1] => 试

  [2] => 一

  [3] => 下

)

四、PCRE中的/u解析

在PHP中,正则的定界符可以为#、%、/等等。

在一个正则中有时后面会有些修饰符。那么他们都是什么意思呢?

比如:

%[\x{4e00}-\x{9fa5}]+%u

其中后面的修饰符u代码表以正则匹配以utf-8的编码格式匹配。

例子一:

<?php
 $strings = '测试一下';
 $is_true = preg_match_all('%[\x{4e00}-\x{9fa5}]+%u', $strings, $match);
var_dump($is_true);

打印结果如下:

Array(

  [0] => Array

    (

      [0] => 测试一下

    )

)

这里的[\x{4e00}-\x{9fa5}]是什么意思呢?

在PHP正则中\x用来表示16进制。

中文的UNICODE码点在4E00 - 9FFF (这里说的都是16进制)

所以,正则匹配写法就是区间[],[\x{4E00}-\x{9FFF}]

这两个正则的效果都是一样的。

PHP 相关文章推荐
多重?l件?合查?(一)
Oct 09 PHP
Ajax PHP分页演示
Jan 02 PHP
一个PHP的String类代码
Apr 20 PHP
php设计模式 FlyWeight (享元模式)
Jun 26 PHP
php长字符串定义方法
Jul 12 PHP
PHP页面中文乱码分析
Oct 29 PHP
php实现memcache缓存示例讲解
Dec 04 PHP
PHP中调用SVN命令更新网站方法
Jan 07 PHP
浅谈PHP接收POST数据方式
Jun 05 PHP
PHP附件下载中文名称乱码的解决方法
Dec 17 PHP
Symfony查询方法实例小结
Jun 28 PHP
在laravel5.2中实现点击用户头像更改头像的方法
Oct 14 PHP
通过PHP设置BugFree获取邮箱通知
Apr 25 #PHP
PHP实现字符串的全排列详解
Apr 24 #PHP
PHP实现二维数组按照指定的字段进行排序算法示例
Apr 23 #PHP
Laravel5.0+框架邮件发送功能实现方法图文与实例详解
Apr 23 #PHP
一文掌握PHP Xdebug 本地与远程调试(小结)
Apr 23 #PHP
ThinkPHP3.2.3框架邮件发送功能图文实例详解
Apr 23 #PHP
PHP信号处理机制的操作代码讲解
Apr 19 #PHP
You might like
PHP 简单数组排序实现代码
2009/08/05 PHP
php下使用SimpleXML 处理XML 文件
2010/02/27 PHP
微信公众平台之快递查询功能用法实例
2015/04/14 PHP
YII Framework框架教程之安全方案详解
2016/03/14 PHP
PHP策略模式定义与用法示例
2017/07/27 PHP
基于Jquery的文字自动截取(提供源代码)
2011/08/09 Javascript
精心挑选的12款优秀的基于jQuery的手风琴效果插件和教程
2012/08/22 Javascript
你必须知道的Javascript知识点之&quot;深入理解作用域链&quot;的介绍
2013/04/23 Javascript
Ajax分页插件Pagination从前台jQuery到后端java总结
2016/07/22 Javascript
angular-ui-sortable实现可拖拽排序列表
2016/12/28 Javascript
JavaScript装饰器函数(Decorator)实例详解
2017/03/30 Javascript
从零开始学习Node.js系列教程一:http get和post用法分析
2017/04/13 Javascript
Angular2 http jsonp的实例详解
2017/08/31 Javascript
jQuery插件artDialog.js使用与关闭方法示例
2017/10/09 jQuery
修改npm全局安装模式的路径方法
2018/05/15 Javascript
vue 使某个组件不被 keep-alive 缓存的方法
2018/09/21 Javascript
详解使用angular框架离线你的应用(pwa指南)
2019/01/31 Javascript
Javascript迭代、递推、穷举、递归常用算法实例讲解
2019/02/01 Javascript
详解Vue-cli3 项目在安卓低版本系统和IE上白屏问题解决
2019/04/14 Javascript
Vue 如何使用props、emit实现自定义双向绑定的实现
2020/06/05 Javascript
[50:28]LGD女子学院第三期 DOTA2复仇之魂教学
2013/12/24 DOTA
[50:58]2018DOTA2亚洲邀请赛3月29日 小组赛A组OpTic VS Newbee
2018/03/30 DOTA
Python中字符串格式化str.format的详细介绍
2017/02/17 Python
Python中BeautifulSoup通过查找Id获取元素信息
2020/12/07 Python
CSS3实现多背景展示效果通过CSS3定位多张背景
2014/08/10 HTML / CSS
详解CSS3中的box-sizing(content-box与border-box)
2019/04/19 HTML / CSS
css3实现可拖动的魔方3d效果
2019/05/07 HTML / CSS
物流仓储计划书
2014/01/10 职场文书
修理厂厂长岗位职责
2014/01/30 职场文书
银行批评与自我批评
2014/02/10 职场文书
美术国培研修感言
2014/02/12 职场文书
2014年庆元旦活动方案
2014/02/15 职场文书
英文版辞职信
2015/02/28 职场文书
优秀大学生自荐信
2015/03/26 职场文书
关于迟到的检讨书
2015/05/06 职场文书
JavaScript实现简单计时器
2021/06/22 Javascript