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调用数据库的存贮过程!
Oct 09 PHP
PHP 删除文件与文件夹操作 unlink()与rmdir()这两个函数的使用
Jul 17 PHP
基于PHP+Ajax实现表单验证的详解
Jun 25 PHP
PHP系统命令函数使用分析
Jul 05 PHP
ThinkPHP连接数据库及主从数据库的设置教程
Aug 22 PHP
PHP邮件发送类PHPMailer用法实例详解
Sep 22 PHP
php隐藏IP地址后两位显示为星号的方法
Nov 21 PHP
php实现字符串反转输出的方法
Mar 14 PHP
php防止sql注入的方法详解
Feb 20 PHP
php strftime函数获取日期时间(switch用法)
May 16 PHP
PHP按符号截取字符串的指定部分的实现方法
Sep 10 PHP
php设计模式之装饰模式应用案例详解
Jun 17 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常用函数小技巧
2008/09/11 PHP
The specified CGI application misbehaved by not returning a complete set of HTTP headers
2011/03/31 PHP
ThinkPHP调试模式与日志记录概述
2014/08/22 PHP
PHP指定截取字符串中的中英文或数字字符的实例分享
2016/03/18 PHP
php结合ajax实现手机发红包的案例
2016/10/13 PHP
PHP批量获取网页中所有固定种子链接的方法
2016/11/18 PHP
浅析PHP开发规范
2018/02/05 PHP
Laravel使用Queue队列的技巧汇总
2019/09/02 PHP
jquery中对表单的基本操作代码
2010/07/29 Javascript
js使浏览器窗口最大化实现代码(适用于IE)
2013/08/07 Javascript
原生的html元素选择器类似jquery选择器
2014/10/15 Javascript
JS使用eval解析JSON的注意事项分析
2015/11/14 Javascript
深入理解JavaScript中为什么string可以拥有方法
2016/05/24 Javascript
javascript事件模型介绍
2016/05/31 Javascript
微信小程序 label 组件详解及简单实例
2017/01/10 Javascript
理解 javascript 中的函数表达式与函数声明
2017/07/07 Javascript
JS+HTML5 Canvas实现简单的写字板功能示例
2018/08/30 Javascript
利用Node.js如何实现文件循环覆写
2019/04/05 Javascript
JS图片懒加载技术实现过程解析
2020/07/27 Javascript
Eclipse + Python 的安装与配置流程
2013/03/05 Python
解决Django模板无法使用perms变量问题的方法
2017/09/10 Python
Python 旋转打印各种矩形的方法
2019/07/09 Python
HTML5 Notification(桌面提醒)功能使用实例
2014/03/17 HTML / CSS
HTML5 canvas绘制的玫瑰花效果
2014/05/29 HTML / CSS
爱尔兰最大的体育零售商:Life Style Sports
2019/06/12 全球购物
日本最大的彩色隐形眼镜销售网站:CharmColor
2020/09/09 全球购物
会计电算化专业个人的自我评价
2013/11/24 职场文书
纺织工程专业个人求职信范文
2014/01/27 职场文书
教书育人演讲稿
2014/09/11 职场文书
美容院合作经营协议书
2014/10/10 职场文书
向雷锋同志学习倡议书
2015/04/27 职场文书
学生检讨书怎么写
2015/05/07 职场文书
2015年度高中教师工作总结
2015/05/26 职场文书
2015小学音乐教师个人工作总结
2015/07/21 职场文书
2019财务转正述职报告
2019/06/27 职场文书
python numpy中setdiff1d的用法说明
2021/04/22 Python