一、前言
前面的博客里,有對(duì)字符集的解析。這里就不是字符集的事兒了,在PHP中很多函數(shù)的處理默認(rèn)是unicode中的UTF-8編碼格式。那么廢話不多說(shuō),直接開始正題。
二、PHP函數(shù)mb_split解析
<?php$preg_strings = '測(cè)、試、一、下';$preg_str = mb_split('、', $preg_strings);print_r($preg_str);輸出效果
Array( [0] => 測(cè) [1] => 試 [2] => 一 [3] => 下)
此函數(shù)默認(rèn)底層解析,以UTF-8的編碼格式解析。以分隔符(、)的UNICODE的16進(jìn)制碼點(diǎn)分割字符$preg_strings。
三、PHP函數(shù)preg_split解析
分割字符串“測(cè)試一下”
<?php$strings = '測(cè)試一下';$mb_arr = preg_split('//u', $strings, -1, PREG_SPLIT_NO_EMPTY);print_r($mb_arr);打印結(jié)果如下:
Array( [0] => 測(cè) [1] => 試 [2] => 一 [3] => 下)
四、PCRE中的/u解析
在PHP中,正則的定界符可以為#、%、/等等。
在一個(gè)正則中有時(shí)后面會(huì)有些修飾符。那么他們都是什么意思呢?
比如:
%[/x{4e00}-/x{9fa5}]+%u其中后面的修飾符u代碼表以正則匹配以u(píng)tf-8的編碼格式匹配。
例子一:
<?php $strings = '測(cè)試一下'; $is_true = preg_match_all('%[/x{4e00}-/x{9fa5}]+%u', $strings, $match);var_dump($is_true);打印結(jié)果如下:
Array( [0] => Array ( [0] => 測(cè)試一下 ))
這里的[/x{4e00}-/x{9fa5}]是什么意思呢?
在PHP正則中/x用來(lái)表示16進(jìn)制。
中文的UNICODE碼點(diǎn)在4E00 - 9FFF (這里說(shuō)的都是16進(jìn)制)
所以,正則匹配寫法就是區(qū)間[],[/x{4E00}-/x{9FFF}]
這兩個(gè)正則的效果都是一樣的。
新聞熱點(diǎn)
疑難解答
圖片精選