一、前言
前面的博客里,有對(duì)字符集的解析。這里就不是字符集的事兒了,在PHP中很多函數(shù)的處理默認(rèn)是unicode中的UTF-8編碼格式。那么廢話不多說(shuō),直接開(kāi)始正題。
二、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ì)有些修飾符。那么他們都是什么意思呢?
比如:
其中后面的修飾符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正則中\(zhòng)x用來(lái)表示16進(jìn)制。
中文的UNICODE碼點(diǎn)在4E00 - 9FFF (這里說(shuō)的都是16進(jìn)制)
所以,正則匹配寫法就是區(qū)間[],[\x{4E00}-\x{9FFF}]
這兩個(gè)正則的效果都是一樣的。
您可能感興趣的文章:- php 正則去掉p> /p> 空格 與p>br/>/p>
- php正則表達(dá)式使用方法整理集合
- PHP常用正則表達(dá)式精選(推薦)
- PHP正則表達(dá)式處理函數(shù)(PCRE 函數(shù))實(shí)例小結(jié)
- PHP正則表達(dá)式筆記與實(shí)例詳解
- PHP正則判斷一個(gè)變量是否為正整數(shù)的方法
- PHP正則驗(yàn)證字符串是否為數(shù)字的兩種方法并附常用正則
- PHP正則匹配到2個(gè)字符串之間的內(nèi)容方法
- PHP正則解析多重循環(huán)模板示例
- PHP正則過(guò)濾處理微信昵稱中emoji字符的方法
- PHP實(shí)現(xiàn)正則匹配所有括號(hào)中的內(nèi)容
- PHP使用正則表達(dá)式實(shí)現(xiàn)過(guò)濾非法字符串功能示例
- PHP簡(jiǎn)單實(shí)現(xiàn)正則匹配省市區(qū)的方法
- PHP實(shí)現(xiàn)正則表達(dá)式分組捕獲操作示例
- phpstorm 正則匹配刪除空行、注釋行(替換注釋行為空行)
- PHP利用正則表達(dá)式實(shí)現(xiàn)手機(jī)號(hào)碼中間4位用星號(hào)(*)替換顯示功能
- 史上最全的PHP正則表達(dá)式(手機(jī)號(hào)需要加上177-***)
- PHP正則之正向預(yù)查與反向預(yù)查講解與實(shí)例