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 相关文章推荐
Session的工作方式
Oct 09 PHP
也谈php网站在线人数统计
Apr 09 PHP
PHP 加密与解密的斗争
Apr 17 PHP
发一个php简单的伪原创程序,配合商城采集用的
Oct 12 PHP
PHP新建类问题分析及解决思路
Nov 19 PHP
CI框架的安全性分析
May 18 PHP
PHP抓取远程图片(含不带后缀的)教程详解
Oct 21 PHP
lnmp安装多版本PHP共存的方法详解
Aug 02 PHP
PHP中引用类型和值类型功能与用法示例
Feb 26 PHP
PHP使用CURL实现下载文件功能示例
Jun 03 PHP
PHP实现笛卡尔积算法的实例讲解
Dec 22 PHP
laravel admin实现分类树/模型树的示例代码
Jun 10 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+mysql开源XNA 聚合程序发布 下载
2007/07/13 PHP
php一些公用函数的集合
2008/03/27 PHP
php中return的用法实例分析
2015/02/28 PHP
CodeIgniter框架常见用法工作总结
2017/03/16 PHP
php如何获取Http请求
2020/04/30 PHP
css3实现背景模糊的三种方式
2021/03/09 HTML / CSS
js汉字转拼音实现代码
2013/02/06 Javascript
Node.js中安全调用系统命令的方法(避免注入安全漏洞)
2014/12/05 Javascript
js中取得变量绝对值的方法
2015/01/03 Javascript
JavaScript获取网页中第一个链接ID的方法
2015/04/03 Javascript
javascript实现鼠标移到Image上方时显示文字效果的方法
2015/08/07 Javascript
JS延时器提示框的应用实例代码解析
2016/04/27 Javascript
bootstrap与Jquery UI 按钮样式冲突的解决办法
2016/09/23 Javascript
老生常谈Javascript中的原型和this指针
2016/10/09 Javascript
AngularJS入门教程之MVC架构实例分析
2016/11/01 Javascript
js实现右键菜单功能
2016/11/28 Javascript
JavaScript实现经典排序算法之插入排序
2016/12/28 Javascript
AngularJS的ng-click传参的方法
2017/06/19 Javascript
layui2.0使用table+laypage实现真分页
2019/07/27 Javascript
js实现数字从零慢慢增加到指定数字示例
2019/11/07 Javascript
vue.js 实现a标签href里添加参数
2019/11/12 Javascript
详解Vue的ref特性的使用
2020/01/24 Javascript
python mac下安装虚拟环境的图文教程
2019/04/12 Python
使用HTML5 Canvas API绘制弧线的教程
2016/03/22 HTML / CSS
毕业生找工作推荐信
2013/11/21 职场文书
境外导游求职信
2014/02/27 职场文书
大四毕业生自荐书
2014/07/05 职场文书
2014年科室工作总结范文
2014/12/19 职场文书
音乐教师个人工作总结
2015/02/06 职场文书
2016年大学自主招生自荐信范文
2015/03/24 职场文书
幼儿园家长反馈意见
2015/06/03 职场文书
演讲稿:态度决定一切
2019/04/02 职场文书
因个人工作失误检讨书
2019/06/21 职场文书
python Tkinter的简单入门教程
2021/04/11 Python
vue选项卡切换的实现案例
2022/04/11 Vue.js
Ruby处理YAML和json数据
2022/04/18 Ruby