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截取中文字符串的问题
Jul 12 PHP
在 PHP 中使用随机数的三个步骤
Oct 09 PHP
仿Aspnetpager的一个PHP分页类代码 附源码下载
Oct 08 PHP
如何用PHP实现插入排序?
Apr 10 PHP
php使用curl抓取qq空间的访客信息示例
Feb 28 PHP
php switch语句多个值匹配同一代码块的实现
Mar 03 PHP
跟我学Laravel之快速入门
Oct 15 PHP
PHP实现指定字段的多维数组排序函数分享
Mar 09 PHP
php英文单词统计器
Jun 23 PHP
PHP实现动态压缩js与css文件的方法
May 02 PHP
实现laravel 插入操作日志到数据库的方法
Oct 11 PHP
php设计模式之备忘模式分析【星际争霸游戏案例】
Mar 24 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 zlib压缩和解压缩swf文件的代码
2008/12/30 PHP
PHP随机数生成代码与使用实例分析
2011/04/08 PHP
PHP编码转换
2012/11/05 PHP
PHP strip_tags()去除HTML、XML以及PHP的标签介绍
2014/02/18 PHP
简单实现PHP留言板功能
2016/12/21 PHP
PHP实现字母数字混合验证码功能
2019/07/11 PHP
Laravel5.5 动态切换多语言的操作方式
2019/10/25 PHP
JavaScript基础语法让人疑惑的地方小结
2012/05/23 Javascript
JavaScript的jQuery库插件的简要开发指南
2015/08/12 Javascript
js自定义回调函数
2015/12/13 Javascript
浅析JavaScript声明变量
2015/12/21 Javascript
javascript瀑布流式图片懒加载实例解析与优化
2016/02/23 Javascript
JS实现多级菜单中当前菜单不随页面跳转样式而发生变化
2017/05/30 Javascript
Bootstrap Table 在指定列中添加下拉框控件并获取所选值
2017/07/31 Javascript
Express系列之multer上传的使用
2017/10/27 Javascript
详解vue.js之props传递参数
2017/12/12 Javascript
vue+mousemove实现鼠标拖动功能(拖动过快失效问题解决方法)
2018/08/24 Javascript
JavaScript数据结构与算法之检索算法示例【二分查找法、计算重复次数】
2019/02/22 Javascript
解决layui页面按钮点击无反应,也不报错的问题
2019/09/29 Javascript
vue项目实现图片上传功能
2019/12/23 Javascript
vue2.0 解决抽取公用js的问题
2020/07/31 Javascript
python实现sublime3的less编译插件示例
2014/04/27 Python
python 内置模块详解
2019/01/01 Python
基于腾讯云服务器部署微信小程序后台服务(Python+Django)
2019/05/08 Python
html5中canvas学习笔记1-画板的尺寸与实际显示尺寸
2013/01/06 HTML / CSS
Expedia法国:全球最大在线旅游公司
2018/09/30 全球购物
阿迪达斯新加坡官方网站:adidas新加坡
2019/12/06 全球购物
房地产销售大学生自我评价分享
2013/11/11 职场文书
送温暖献爱心活动总结
2014/07/08 职场文书
预备党员群众意见
2015/06/01 职场文书
签字仪式主持词
2015/07/03 职场文书
勤俭节约主题班会
2015/08/13 职场文书
2016读书月活动心得体会
2016/01/14 职场文书
能让Python提速超40倍的神器Cython详解
2021/06/24 Python
golang 语言中错误处理机制
2021/08/30 Golang
Vue组件化(ref,props, mixin,.插件)详解
2022/05/15 Vue.js