一、前言
前面的部落格裡,有對字元集的解析。這裡就不是字元集的事兒了,在PHP中很多函數的處理預設是unicode中的UTF-8編碼格式。那麼廢話不多說,直接開始正題。
二、PHP函數mb_split解析
1 <?php 2 $preg_strings = '測、試、一、下'; 3 $preg_str = mb_split('、', $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 = '測試一下'; 3 $mb_arr = preg_split('//u', $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 = '測試一下'; 3 $is_true = preg_match_all('%[x{4e00}-x{9fa5}]+%u', $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正則解析的詳細內容,更多請關注TW511.COM其它相關文章!