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中cookies使用指南
Mar 16 PHP
匹配csdn用户数据库与官方用户的重合度并将重叠部分的用户筛选出来
Dec 25 PHP
深入extjs与php参数交互的详解
Jun 25 PHP
PHP根据传入参数合并多个JS和CSS文件的简单实现
Jun 13 PHP
php函数与传递参数实例分析
Nov 15 PHP
PHP 网站修改默认访问文件的nginx配置
May 27 PHP
PHP实现的mysql主从数据库状态检测功能示例
Jul 20 PHP
浅谈PHP进程管理
Mar 08 PHP
PHP信号处理机制的操作代码讲解
Apr 19 PHP
Laravel推荐使用的十个辅助函数
May 10 PHP
Smarty模板配置实例简析
Jul 20 PHP
Linux系统下安装PHP7.3版本
Jun 26 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 获取mysql数据库信息代码
2009/03/12 PHP
解析php dirname()与__FILE__常量的应用
2013/06/24 PHP
php实现的简单检验登陆类
2015/06/18 PHP
PHP经典算法集锦【经典收藏】
2016/09/14 PHP
PHP与SQL语句写一句话木马总结
2019/10/11 PHP
javascript 节点遍历函数
2010/03/28 Javascript
asp.net下使用jquery 的ajax+WebService+json 实现无刷新取后台值的实现代码
2010/09/19 Javascript
js的隐含参数(arguments,callee,caller)使用方法
2014/01/28 Javascript
js调试系列 初识控制台
2014/06/18 Javascript
JavaScript中数据结构与算法(五):经典KMP算法
2015/06/19 Javascript
jquery实现仿新浪微博评论滚动效果
2015/08/06 Javascript
JS实现的仿QQ空间图片弹出效果代码
2016/02/23 Javascript
微信小程序  action-sheet详解及实例代码
2016/11/09 Javascript
Vuex之理解Mutations的用法实例
2017/04/19 Javascript
用javascript获取任意颜色的更亮或更暗颜色值示例代码
2017/07/21 Javascript
vue封装一个简单的div框选时间的组件的方法
2019/01/06 Javascript
使用Webpack提升Vue.js应用程序的4种方法(翻译)
2019/10/09 Javascript
JS常用排序方法实例代码解析
2020/03/03 Javascript
html-webpack-plugin修改页面的title的方法
2020/06/18 Javascript
vue 在methods中调用mounted的实现操作
2020/08/07 Javascript
Windows和Linux下使用Python访问SqlServer的方法介绍
2015/03/10 Python
python八大排序算法速度实例对比
2017/12/06 Python
python图像处理入门(一)
2019/04/04 Python
wxPython绘图模块wxPyPlot实现数据可视化
2019/11/19 Python
Python如何使用函数做字典的值
2019/11/30 Python
Python的in,is和id函数代码实例
2020/04/18 Python
Python求解排列中的逆序数个数实例
2020/05/03 Python
Python OpenCV实现测量图片物体宽度
2020/05/27 Python
Python3读写ini配置文件的示例
2020/11/06 Python
Python绘制数码晶体管日期
2021/02/19 Python
Lookfantastic挪威官网:英国知名美妆购物网站
2017/07/26 全球购物
阿迪达斯中国官网:Adidas中国
2020/12/14 全球购物
2015年元旦联欢晚会活动总结
2014/11/28 职场文书
写给纪委的违纪检讨书
2015/05/05 职场文书
养成教育主题班会
2015/08/13 职场文书
十大冰系宝可梦排名,颜值最高的阿罗拉九尾,第三使用率第一
2022/03/18 日漫