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 相关文章推荐
php 抽象类的简单应用
Sep 06 PHP
php数组函数序列之array_search()- 按元素值返回键名
Nov 04 PHP
php中一个完整表单处理实现代码
Nov 10 PHP
PHP中使用crypt()实现用户身份验证的代码
Sep 05 PHP
PHP对象递归引用造成内存泄漏分析
Aug 28 PHP
Yii入门教程之目录结构、入口文件及路由设置
Nov 25 PHP
教你在PHPStorm中配置Xdebug
Jul 27 PHP
twig模板获取全局变量的方法
Feb 05 PHP
php车辆违章查询数据示例
Oct 14 PHP
PHP addcslashes()函数讲解
Feb 03 PHP
is_file和file_exists效率比较
Mar 14 PHP
PHP 对接美团大众点评团购券(门票)的开发步骤
Apr 03 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 miniBB中文乱码问题解决方法
2008/11/25 PHP
php获取当月最后一天函数分享
2015/02/02 PHP
试用php中oci8扩展
2015/06/18 PHP
ajax+php实现无刷新验证手机号的实例
2017/12/22 PHP
php7 新增功能实例总结
2020/05/25 PHP
jQuery的Ajax时无响应数据的解决方法
2010/05/25 Javascript
基于jQuery的烟花效果(运动相关)点击屏幕出烟花
2012/06/14 Javascript
js监听键盘事件示例代码
2013/07/26 Javascript
js导入导出excel(实例代码)
2013/11/25 Javascript
js判断字符长度以及中英文数字等
2013/12/31 Javascript
jQuery循环滚动新闻列表示例代码
2014/06/17 Javascript
javascript创建对象的几种模式介绍
2016/05/06 Javascript
angularjs实现上拉加载和下拉刷新数据功能
2017/06/12 Javascript
JS实现匀速与减速缓慢运动的动画效果封装示例
2018/08/27 Javascript
jQuery滑动效果实现方法分析
2018/09/05 jQuery
Vue的路由及路由钩子函数的实现
2019/07/02 Javascript
webpack中的模式(mode)使用详解
2020/02/20 Javascript
[01:14]英雄,所敬略同——2018完美盛典宣传视频4K
2018/12/05 DOTA
Python 获取新浪微博的最新公共微博实例分享
2014/07/03 Python
如何用itertools解决无序排列组合的问题
2017/05/18 Python
对Python中的@classmethod用法详解
2018/04/21 Python
Python设计模式之装饰模式实例详解
2019/01/21 Python
Appium+Python自动化测试之运行App程序示例
2019/01/23 Python
调整Jupyter notebook的启动目录操作
2020/04/10 Python
opencv 实现特定颜色线条提取与定位操作
2020/06/02 Python
CSS3 优势以及网页设计师如何使用CSS3技术
2009/07/29 HTML / CSS
CSS3 简单又实用的5个属性
2010/03/04 HTML / CSS
美国羽绒床上用品第一品牌:Pacific Coast
2018/08/25 全球购物
环保志愿者活动总结
2014/06/27 职场文书
教师作风建设剖析材料
2014/10/11 职场文书
党员四风问题个人对照检查材料
2014/10/26 职场文书
销售经理助理岗位职责
2015/04/13 职场文书
2015年组织委员工作总结
2015/04/23 职场文书
幼儿园教研工作总结2015
2015/05/12 职场文书
政审证明材料
2015/06/19 职场文书
歌咏比赛主持词
2015/06/29 职场文书