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&amp;&amp;mysql)一
Oct 09 PHP
PHP 可阅读随机字符串代码
May 26 PHP
PHP用GD库生成高质量的缩略图片
Mar 09 PHP
处理(php-cgi.exe - FastCGI 进程超过了配置的请求超时时限)的问题
Jul 03 PHP
PHP FATAL ERROR: CALL TO UNDEFINED FUNCTION BCMUL()解决办法
May 04 PHP
PHP高级编程实例:编写守护进程
Sep 02 PHP
PHP实现自动对图片进行滚动显示的方法
Mar 12 PHP
PHP连接Nginx服务器并解析Nginx日志的方法
Aug 16 PHP
php curl 模拟登录并获取数据实例详解
Dec 22 PHP
PHP删除二维数组中相同元素及数组重复值的方法示例
May 05 PHP
利用PHPStorm如何开发Laravel应用详解
Aug 30 PHP
php微信开发之谷歌测距
Jun 14 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 date()日期时间函数详解
2010/05/16 PHP
php 字符串替换的方法
2012/01/10 PHP
MySQL时间字段究竟使用INT还是DateTime的说明
2012/02/27 PHP
PHP session_start()问题解疑(详细介绍)
2013/07/05 PHP
PHP数字前补0的自带函数sprintf 和number_format的用法(详解)
2017/02/06 PHP
Jquery进度条插件 Progress Bar小问题解决
2011/07/12 Javascript
无闪烁更新网页内容JS实现
2013/12/19 Javascript
jquery中使用循环下拉菜单示例代码
2014/09/24 Javascript
日常收藏的jquery技巧
2015/12/02 Javascript
jQuery控制文本框只能输入数字和字母及使用方法
2016/05/26 Javascript
基于BootStrap的前端分页带省略号和上下页效果
2017/05/18 Javascript
vue.js的vue-cli脚手架中使用百度地图API的实例
2019/01/21 Javascript
layui table单元格事件修改值的方法
2019/09/24 Javascript
[08:07]DOTA2每周TOP10 精彩击杀集锦vol.8
2014/06/25 DOTA
[01:01:41]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Magma BO3 第二场 1月31日
2021/03/11 DOTA
Python中模块string.py详解
2017/03/12 Python
详解Python函数可变参数定义及其参数传递方式
2017/08/02 Python
Python使用re模块正则提取字符串中括号内的内容示例
2018/06/01 Python
matplotlib给子图添加图例的方法
2018/08/03 Python
OpenCV HSV颜色识别及HSV基本颜色分量范围
2019/03/22 Python
python IDLE添加行号显示教程
2020/04/25 Python
Python 测试框架unittest和pytest的优劣
2020/09/26 Python
pycharm永久激活超详细教程
2020/10/29 Python
高中生学习总结的自我评价范文
2013/10/13 职场文书
物流仓管员工作职责
2014/01/06 职场文书
物理专业本科生自荐信
2014/01/30 职场文书
小学生作文评语
2014/04/18 职场文书
大学生求职计划书
2014/04/30 职场文书
2014年感恩母亲演讲稿
2014/05/27 职场文书
体育教师求职信
2014/06/30 职场文书
高中毕业典礼演讲稿
2014/09/09 职场文书
讲文明懂礼貌演讲稿
2014/09/11 职场文书
2014党员四风对照检查材料思想汇报
2014/09/17 职场文书
小鞋子观后感
2015/06/05 职场文书
2019年圣诞节祝福语集锦
2019/12/25 职场文书
对讲机知识
2022/04/07 无线电