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 相关文章推荐
用Zend Encode编写开发PHP程序
Oct 09 PHP
也谈 PHP 和 MYSQL
Oct 09 PHP
对squid中refresh_pattern的一些理解和建议
Apr 17 PHP
深入for,while,foreach遍历时间比较的详解
Jun 08 PHP
PHP Class&amp;Object -- PHP 自排序二叉树的深入解析
Jun 25 PHP
显示程序执行时间php函数代码
Aug 29 PHP
CodeIgniter采用config控制的多语言实现根据浏览器语言自动转换功能
Jul 18 PHP
CodeIgniter与PHP5.6的兼容问题
Jul 16 PHP
高质量PHP代码的50个实用技巧必备(下)
Jan 22 PHP
PHP实现二维数组去重功能示例
Jan 12 PHP
PHP面向对象中new self()与 new static()的区别浅析
Aug 17 PHP
PHP从尾到头打印链表实例讲解
Sep 27 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.ini中文版(2)
2006/10/09 PHP
PHP取进制余数函数代码
2012/01/19 PHP
thinkphp中session和cookie无效的解决方法
2014/12/19 PHP
php实现数组按指定KEY排序的方法
2015/03/30 PHP
Yii2框架RESTful API 格式化响应,授权认证和速率限制三部分详解
2016/11/10 PHP
thinkPHP通用控制器实现方法示例
2017/11/23 PHP
Jquery 模板数据绑定插件的使用方法详解
2013/07/08 Javascript
JavaScript中实现最高效的数组乱序方法
2014/10/11 Javascript
AngularJS基础知识笔记之过滤器
2015/05/10 Javascript
浅谈jQuery添加的HTML,JS失效的问题
2016/10/05 Javascript
用jmSlip编写移动端顶部日历选择控件
2016/10/24 Javascript
node+express制作爬虫教程
2016/11/11 Javascript
利用Node.js+Koa框架实现前后端交互的方法
2017/02/27 Javascript
详解数组Array.sort()排序的方法
2020/05/09 Javascript
使用canvas及js简单生成验证码方法
2017/04/02 Javascript
JS中使用gulp实现压缩文件及浏览器热加载功能
2017/07/12 Javascript
JQuery常见节点操作实例分析
2019/05/15 jQuery
小程序使用wxs解决wxml保留2位小数问题
2019/12/13 Javascript
微信小程序 flexbox layout快速实现基本布局的解决方案
2020/03/24 Javascript
解决ant design vue中树形控件defaultExpandAll设置无效的问题
2020/10/26 Javascript
[08:38]DOTA2-DPC中国联赛 正赛 VG vs Elephant 选手采访
2021/03/11 DOTA
Python写的一个简单DNS服务器实例
2014/06/04 Python
Python内置函数—vars的具体使用方法
2017/12/04 Python
pandas string转dataframe的方法
2018/04/11 Python
详解Python做一个名片管理系统
2019/03/14 Python
python实现中文文本分句的例子
2019/07/15 Python
Python线程协作threading.Condition实现过程解析
2020/03/12 Python
Python接口测试结果集实现封装比较
2020/05/01 Python
PyCharm最新激活码PyCharm2020.2.3有效
2020/11/18 Python
python 爬取腾讯视频评论的实现步骤
2021/02/18 Python
世界著名的顶级牛排:Omaha Steak(奥马哈牛排)
2016/09/20 全球购物
银行实习自我鉴定
2013/10/12 职场文书
试用期转正员工自我评价
2014/09/18 职场文书
医生个人年终总结
2015/02/28 职场文书
应届生求职自荐信范文
2015/03/04 职场文书
如何用python插入独创性声明
2021/03/31 Python