首頁  >  文章  >  後端開發  >  PHP之PCRE正規解析

PHP之PCRE正規解析

little bottle
little bottle轉載
2019-04-25 17:41:382902瀏覽

本篇文章的主要內容是講PHP之PCRE正規解析,具有一定的參考價值,有興趣的朋友可以了解一下,希望能幫助到你。

一、前言

在前面的部落格裡,有字元集的解析。這裡就不是字元集的事兒了,在PHP中很多函數的處理預設是unicode中的UTF-8編碼格式。那麼廢話不多說,直接開始正題。

二、PHP函數mb_split解析

#
1 <?php
2 $preg_strings = &#39;测、试、一、下&#39;;
3 $preg_str = mb_split(&#39;、&#39;, $preg_strings);
4 print_r($preg_str);

列印結果:

Array(
    [0] => 测
    [1] => 试
    [2] => 一
    [3] => 下)

此函數預設底層解析,以UTF-8的編碼格式解析。以分隔符號(、)的UNICODE的16進位碼點分割字元$preg_strings

三、PHP函數preg_split解析

分割字串「測試一下」

1 <?php
2 $strings = &#39;测试一下&#39;;
3 $mb_arr = preg_split(&#39;//u&#39;, $strings, -1, PREG_SPLIT_NO_EMPTY);
4 print_r($mb_arr);

列印結果如下:

Array(
    [0] => 测
    [1] => 试
    [2] => 一
    [3] => 下
)

四、PCRE中的/u解析

在PHP中,正規的定界符可以是#、%、/等等。

在一個正規則中有時後面會有些修飾符。那他們都是什麼意思呢?

例如:

%[\x{4e00}-\x{9fa5}]+%u

其中後面的修飾符u#程式碼表以正規匹配以utf-8的編碼格式匹配。

範例一:

1 <?php
2 $strings = &#39;测试一下&#39;;
3 $is_true = preg_match_all(&#39;%[\x{4e00}-\x{9fa5}]+%u&#39;, $strings, $match);
4 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之PCRE正規解析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:cnblogs.com。如有侵權,請聯絡admin@php.cn刪除