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邮件专题
Oct 09 PHP
php中http_build_query 的一个问题
Mar 25 PHP
php排序算法(冒泡排序,快速排序)
Oct 09 PHP
关于PHP自动判断字符集并转码的详解
Jun 26 PHP
php实现mysql封装类示例
May 07 PHP
2014年10个最佳的PHP图像操作库
Jul 14 PHP
新浪SAE搭建PHP项目教程
Jan 28 PHP
四个常见html网页乱码问题及解决办法
Sep 08 PHP
PHP5.3连接Oracle客户端及PDO_OCI模块的安装方法
May 13 PHP
php无限级分类实现方法分析
Oct 19 PHP
php设计模式之工厂方法模式分析【星际争霸游戏案例】
Jan 23 PHP
phpmyadmin在宝塔面板里进不去的解决方案
Jul 06 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作的文本留言本的例子(四)
2006/10/09 PHP
PHP乱码问题,UTF-8乱码常见问题小结
2012/04/09 PHP
thinkphp常见路径用法分析
2014/12/02 PHP
php socket通信简单实现
2016/11/18 PHP
PHP设计模式之组合模式定义与应用示例
2020/02/01 PHP
基于jQuery的弹出消息插件 DivAlert之旅(一)
2010/04/01 Javascript
nodejs读取memcache示例分享
2014/01/02 NodeJs
jQuery实现炫酷的鼠标轨迹特效
2015/02/01 Javascript
jQuery+Ajax实现无刷新操作
2016/01/04 Javascript
Three.js学习之几何形状
2016/08/01 Javascript
JavaScript易错知识点整理
2016/12/05 Javascript
学习使用Bootstrap栅格系统
2017/05/11 Javascript
jQuery 实现双击编辑表格功能
2017/06/19 jQuery
解析Vue 2.5的Diff算法
2017/11/28 Javascript
不使用JavaScript实现菜单的打开和关闭效果demo
2018/05/01 Javascript
如何在基于vue-cli的项目自定义打包环境
2018/11/10 Javascript
Vue Element UI + OSS实现上传文件功能
2019/07/31 Javascript
浅谈Python生成器generator之next和send的运行流程(详解)
2017/05/08 Python
高效测试用例组织算法pairwise之Python实现方法
2017/07/19 Python
Python中实现最小二乘法思路及实现代码
2018/01/04 Python
Python文本统计功能之西游记用字统计操作示例
2018/05/07 Python
python将txt等文件中的数据读为numpy数组的方法
2018/12/22 Python
Python XML转Json之XML2Dict的使用方法
2019/01/15 Python
Python pandas用法最全整理
2019/08/04 Python
100行Python代码实现每天不同时间段定时给女友发消息
2019/09/27 Python
Django实现文件上传下载功能
2019/10/06 Python
关于ZeroMQ 三种模式python3实现方式
2019/12/23 Python
python shapely.geometry.polygon任意两个四边形的IOU计算实例
2020/04/12 Python
HTML5 Canvas——用路径描画线条实例介绍
2013/06/09 HTML / CSS
日本高岛屋百货购物网站:TAKASHIMAYA
2019/03/24 全球购物
澳洲CFL商城:CHEMIST FOR LESS(中文)
2021/02/28 全球购物
医学类个人求职信范文
2014/02/05 职场文书
寻衅滋事罪辩护词
2015/05/21 职场文书
2016年社区综治宣传月活动总结
2016/03/16 职场文书
Python Pygame实战之塔防游戏的实现
2022/03/17 Python
2022微信温控新功能上线
2022/05/09 数码科技