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.ini中文版(2)
Oct 09 PHP
基于文本的访客签到簿
Oct 09 PHP
发挥语言的威力--融合PHP与ASP
Oct 09 PHP
php中0,null,empty,空,false,字符串关系的详细介绍
Jun 20 PHP
使用PHP静态变量当缓存的方法
Nov 13 PHP
使用PHP函数scandir排除特定目录
Jun 12 PHP
php中判断数组相等的方法以及数组运算符介绍
Mar 30 PHP
WIFI万能钥匙密码查询接口实例
Sep 28 PHP
PHP实现QQ登录实例代码
Jan 14 PHP
PHP分页初探 一个最简单的PHP分页代码的简单实现
Jun 21 PHP
php array_keys 返回数组的键名
Oct 25 PHP
thinkphp5 + ajax 使用formdata提交数据(包括文件上传) 后台返回json完整实例
Mar 02 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 数字左侧自动补0
2008/03/31 PHP
php设计模式之单例、多例设计模式的应用分析
2013/06/30 PHP
php对数组内元素进行随机调换的方法
2015/05/12 PHP
laravel-admin解决表单select联动时,编辑默认没选上的问题
2019/09/30 PHP
imgAreaSelect 中文文档帮助说明
2011/10/08 Javascript
javascript中xml操作实现代码
2011/11/21 Javascript
javascript 数字格式化输出的实现代码
2013/12/10 Javascript
如何从jQuery的ajax请求中删除X-Requested-With
2013/12/11 Javascript
使用insertAfter()方法在现有元素后添加一个新元素
2014/05/28 Javascript
jQuery+html5实现div弹出层并遮罩背景
2015/04/15 Javascript
JS利用cookie记忆当前位置的防刷新导航效果
2015/10/15 Javascript
AngularJS路由切换实现方法分析
2017/03/17 Javascript
vue2.0结合DataTable插件实现表格动态刷新的方法详解
2017/03/17 Javascript
Vue2.0 UI框架ElementUI使用方法详解
2017/04/14 Javascript
vuex + keep-alive实现tab标签页面缓存功能
2019/10/17 Javascript
javascript代码实现简易计算器
2021/01/25 Javascript
[31:01]2014 DOTA2国际邀请赛中国区预选赛5.21 CNB VS Orenda
2014/05/23 DOTA
[02:56]DOTA2亚洲邀请赛 VG出场战队巡礼
2015/02/07 DOTA
python实现发送邮件及附件功能
2021/03/02 Python
python自动化脚本安装指定版本python环境详解
2017/09/14 Python
让代码变得更易维护的7个Python库
2018/10/09 Python
Python pickle模块实现对象序列化
2019/11/22 Python
异步传递消息系统的作用
2016/05/01 面试题
JPA的特点
2014/10/25 面试题
Java程序开发中如何应用线程
2016/03/03 面试题
Ruby如何进行文件操作
2014/07/17 面试题
自动化专业个人求职信范文
2013/12/30 职场文书
计算机数据库专业职业生涯规划书
2014/02/08 职场文书
房地产促销活动方案
2014/03/01 职场文书
共产党员公开承诺书范文
2014/03/28 职场文书
保健品市场营销方案
2014/03/31 职场文书
个人股份合作协议书
2014/10/24 职场文书
党的群众路线教育实践活动制度建设计划
2014/11/03 职场文书
离婚代理词范文
2015/05/23 职场文书
团结友爱主题班会
2015/08/13 职场文书
python使用matplotlib绘制图片时x轴的刻度处理
2021/08/30 Python