主页 > 知识库 > PHP中PCRE正则解析代码详解

PHP中PCRE正则解析代码详解

热门标签:Mysql连接数设置 服务器配置 阿里云 Linux服务器 科大讯飞语音识别系统 电子围栏 团购网站 银行业务

一、前言

前面的博客里,有对字符集的解析。这里就不是字符集的事儿了,在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 正则去掉p> /p> 空格  与p>br/>/p>
  • php正则表达式使用方法整理集合
  • PHP常用正则表达式精选(推荐)
  • PHP正则表达式处理函数(PCRE 函数)实例小结
  • PHP正则表达式笔记与实例详解
  • PHP正则判断一个变量是否为正整数的方法
  • PHP正则验证字符串是否为数字的两种方法并附常用正则
  • PHP正则匹配到2个字符串之间的内容方法
  • PHP正则解析多重循环模板示例
  • PHP正则过滤处理微信昵称中emoji字符的方法
  • PHP实现正则匹配所有括号中的内容
  • PHP使用正则表达式实现过滤非法字符串功能示例
  • PHP简单实现正则匹配省市区的方法
  • PHP实现正则表达式分组捕获操作示例
  • phpstorm 正则匹配删除空行、注释行(替换注释行为空行)
  • PHP利用正则表达式实现手机号码中间4位用星号(*)替换显示功能
  • 史上最全的PHP正则表达式(手机号需要加上177-***)
  • PHP正则之正向预查与反向预查讲解与实例

标签:广元 枣庄 衡水 萍乡 大理 衢州 蚌埠 江苏

巨人网络通讯声明:本文标题《PHP中PCRE正则解析代码详解》,本文关键词  ;如发现本文内容存在版权问题,烦请提供相关信息告之我们,我们将及时沟通与处理。本站内容系统采集于网络,涉及言论、版权与本站无关。
  • 相关文章
  • 收缩
    • 微信客服
    • 微信二维码
    • 电话咨询

    • 400-1100-266