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 项目的方法
Jan 02 PHP
php用正则表达式匹配URL的简单方法
Nov 12 PHP
php操作memcache缓存方法分享
Jun 03 PHP
php生成图片验证码的实例讲解
Aug 03 PHP
举例讲解PHP面对对象编程的多态
Aug 12 PHP
PHP微信API接口类
Aug 22 PHP
php版微信发红包接口用法示例
Sep 23 PHP
轻松实现php文件上传功能
Feb 17 PHP
PHP十六进制颜色随机生成器功能示例
Jul 24 PHP
php7函数,声明,返回值等新特性介绍
May 25 PHP
php实现生成PDF文件的方法示例【基于FPDF类库】
Jul 21 PHP
PHP PDOStatement::bindValue讲解
Jan 30 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和ACCESS写聊天室(九)
2006/10/09 PHP
用PHP实现多服务器共享SESSION数据的方法
2007/03/16 PHP
php fsockopen解决办法 php实现多线程
2014/01/20 PHP
PHP后期静态绑定之self::限制实例分析
2018/12/21 PHP
PDO::quote讲解
2019/01/29 PHP
php 命名空间(namespace)原理与用法实例小结
2019/11/13 PHP
基于jquery的分页控件(C#)
2011/01/06 Javascript
eval与window.eval的差别分析
2011/03/17 Javascript
通过Jscript中@cc_on 语句识别IE浏览器及版本的代码
2011/05/07 Javascript
javascript 随机展示头像实现代码
2011/12/06 Javascript
利用jQuery的deferred对象实现异步按顺序加载JS文件
2013/03/17 Javascript
js控制表单奇偶行样式的简单方法
2013/07/31 Javascript
javascript使用定时函数实现跳转到某个页面
2013/12/25 Javascript
javascript实现禁止右键和F12查看源代码
2014/12/26 Javascript
理解javascript闭包
2015/12/15 Javascript
不得不分享的JavaScript常用方法函数集(上)
2015/12/23 Javascript
jQuery实现的跨容器无缝拖动效果代码
2016/06/21 Javascript
JavaScript中 ES6 generator数据类型详解
2016/08/11 Javascript
Bootstrap实现提示框和弹出框效果
2017/01/11 Javascript
js仿百度音乐全选操作
2017/01/13 Javascript
js实现兼容PC端和移动端滑块拖动选择数字效果
2017/02/16 Javascript
jQuery 实时保存页面动态添加的数据的示例
2017/08/14 jQuery
微信小程序实现动态设置placeholder提示文字及按钮选中/取消状态的方法
2017/12/14 Javascript
JS绘图Flot如何实现可选显示曲线图功能
2020/10/16 Javascript
详解如何在vue+element-ui的项目中封装dialog组件
2020/12/11 Vue.js
用python的requests第三方模块抓取王者荣耀所有英雄的皮肤实例
2017/12/14 Python
对IPython交互模式下的退出方法详解
2019/02/16 Python
Pandas之Fillna填充缺失数据的方法
2019/06/25 Python
Python+pyplot绘制带文本标注的柱状图方法
2019/07/08 Python
PYQT5开启多个线程和窗口,多线程与多窗口的交互实例
2019/12/13 Python
TensorFlow实现批量归一化操作的示例
2020/04/22 Python
物理教学随笔感言
2014/02/22 职场文书
财政专业大学生职业生涯规划书
2014/09/17 职场文书
《猴王出世》教学反思
2016/02/23 职场文书
爱心捐款倡议书:点燃希望,传递温暖
2019/11/04 职场文书
详解使用 CSS prefers-* 规范提升网站的可访问性与健壮性
2021/05/25 HTML / CSS