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+AJAX传送中文会导致乱码的问题的解决方法
Sep 08 PHP
在Windows系统上安装PHP运行环境文字教程
Jul 19 PHP
PHP设置一边执行一边输出结果的代码
Sep 30 PHP
ThinkPHP中的系统常量和预定义常量集合
Jul 01 PHP
PHP模块memcached使用指南
Dec 08 PHP
Symfony2创建页面实例详解
Mar 18 PHP
php中namespace及use用法分析
Dec 06 PHP
php的PDO事务处理机制实例分析
Feb 16 PHP
利用Homestead快速运行一个Laravel项目的方法详解
Nov 14 PHP
php 截取中英文混合字符串的方法
May 31 PHP
laravel 使用auth编写登录的方法
Sep 30 PHP
Aliyun Linux 编译安装 php7.3 tengine2.3.2 mysql8.0 redis5的过程详解
Oct 20 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中对2个数组相加的函数
2011/06/24 PHP
Window 7/XP 安装Apache 2.4与PHP 5.4 的过程详解
2013/06/02 PHP
php中jpgraph类库的使用介绍
2013/08/08 PHP
简单实用的网站PHP缓存类实例
2014/07/18 PHP
php获取当月最后一天函数分享
2015/02/02 PHP
php利用ob_start()清除输出和选择性输出的方法
2018/01/18 PHP
实现laravel 插入操作日志到数据库的方法
2019/10/11 PHP
fromCharCode和charCodeAt 方法
2006/12/27 Javascript
Firefox outerHTML实现代码
2009/06/04 Javascript
js动态创建上传表单通过iframe模拟Ajax实现无刷新
2014/02/20 Javascript
Vue.js展示AJAX数据简单示例讲解
2017/03/29 Javascript
vue2.0 中使用transition实现动画效果使用心得
2018/08/13 Javascript
vue实现多个元素或多个组件之间动画效果
2018/09/25 Javascript
Vue面试题及Vue知识点整理
2018/10/07 Javascript
前端Vue项目详解--初始化及导航栏
2019/06/24 Javascript
微信小程序实现首页弹出广告
2020/12/03 Javascript
Python的Flask框架中配置多个子域名的方法讲解
2016/06/07 Python
最大K个数问题的Python版解法总结
2016/06/16 Python
Python利用正则表达式实现计算器算法思路解析
2018/04/25 Python
使用Python opencv实现视频与图片的相互转换
2019/07/08 Python
Django的models模型的具体使用
2019/07/15 Python
selenium+python实现自动登陆QQ邮箱并发送邮件功能
2019/12/13 Python
python网络编程:socketserver的基本使用方法实例分析
2020/04/09 Python
python中常用的数据结构介绍
2021/01/12 Python
Bluebella德国官网:英国性感内衣和睡衣品牌
2019/11/08 全球购物
介绍一下你对SOA的认识
2016/04/24 面试题
汽车检测与维修应届毕业生求职信
2013/10/19 职场文书
周鸿祎:教你写创业计划书
2013/12/30 职场文书
《孙权劝学》教学反思
2014/04/23 职场文书
财务审计整改报告
2014/11/06 职场文书
初三毕业评语
2014/12/26 职场文书
公司人力资源管理制度
2015/08/05 职场文书
Python+Appium实现自动抢微信红包
2021/05/21 Python
OpenCV-Python模板匹配人眼的实例
2021/06/08 Python
Mysql排序的特性详情
2021/11/01 MySQL
tomcat默认最大连接数及相关调整方法
2022/05/06 Servers