当前位置: 首页 > 编程笔记 >

PHP中PCRE正则解析代码详解

詹夕
2023-03-14
本文向大家介绍PHP中PCRE正则解析代码详解,包括了PHP中PCRE正则解析代码详解的使用技巧和注意事项,需要的朋友参考一下

一、前言

前面的博客里,有对字符集的解析。这里就不是字符集的事儿了,在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变量中的HTML代码,例如: 我只想 获取标题之间的文本, 并且我知道使用正则表达式不是一个好主意。 问题答案: 使用PHP 文档对象模型: 输出为: [编辑]:OP澄清后: 如果您想要类似 Lorem ipsum 的内容 。 等,您可以直接使用此正则表达式: 输出: Lorem ipsum。快速的红狐狸……跳过了懒惰的棕色FROG

  • 主要内容:PCRE 函数,PREG 常量正则表达式(regular expression)描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。 更多正则表达式的内容可参考我们的:正则表达式 - 教程。 PHP 中我们可以使用 PCRE 扩展来匹配字符串的模式。 PCRE 函数 函数 描述 preg_filter 执行一个正则表达式搜索和替换 preg_grep 返回匹

  • 本文向大家介绍详解PHP正则表达式替换实现(PHP preg_replace,PHP preg_replace),包括了详解PHP正则表达式替换实现(PHP preg_replace,PHP preg_replace)的使用技巧和注意事项,需要的朋友参考一下 PHP正则表达式替换实现是如何的呢?首先向你介绍下PHP preg_replace,PHP preg_replace的使用是我们实现的方法,

  • 本文向大家介绍php+ajax+json 详解及实例代码,包括了php+ajax+json 详解及实例代码的使用技巧和注意事项,需要的朋友参考一下 php+ajax+json 实例代码 html页面:  php页面: 使用post方式 感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

  • 本文向大家介绍PHP手机号码及邮箱正则表达式实例解析,包括了PHP手机号码及邮箱正则表达式实例解析的使用技巧和注意事项,需要的朋友参考一下 php用正则表达式判断手机号码的写法:从文章中匹配出所有的手机号就可以preg_match_all(),如果要检查用户输入的手机号是否正确可这样来检查:preg_match(). 用正则匹配手机号码的时候, 我们先分析一下手机号码的规律: 1. 手机号通常是1

  • 本文向大家介绍JDK的Parser来解析Java源代码详解,包括了JDK的Parser来解析Java源代码详解的使用技巧和注意事项,需要的朋友参考一下 在JDK中,自带了一套相关的编译API,可以在Java中发起编译流程,解析Java源文件然后获取其语法树,在JDK的tools.jar(OSX下可以在/Library/Java/JavaVirtualMachines/jdk_version/Con