一、前言
前面的博客里,有對字符集的解析。這里就不是字符集的事兒了,在PHP中很多函數的處理默認是unicode中的UTF-8編碼格式。那么廢話不多說,直接開始正題。
二、html' target='_blank'>PHP函數mb_split解析
1 ?php2 $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 ?php2 $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 ?php2 $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視頻教程
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答