PHP中PCRE正則解析代碼詳解
一、前言
前面的博客里,有對字符集的解析。這里就不是字符集的事兒了,在PHP中很多函數(shù)的處理默認(rèn)是unicode中的UTF-8編碼格式。那么廢話不多說,直接開始正題。
二、PHP函數(shù)mb_split解析
<?php $preg_strings = '測、試、一、下'; $preg_str = mb_split('、', $preg_strings); print_r($preg_str);
輸出效果
Array( [0] => 測 [1] => 試 [2] => 一 [3] => 下)
此函數(shù)默認(rèn)底層解析,以UTF-8的編碼格式解析。以分隔符(、)的UNICODE的16進(jìn)制碼點(diǎn)分割字符$preg_strings。
三、PHP函數(shù)preg_split解析
分割字符串“測試一下”
<?php $strings = '測試一下'; $mb_arr = preg_split('//u', $strings, -1, PREG_SPLIT_NO_EMPTY); print_r($mb_arr);
打印結(jié)果如下:
Array( [0] => 測 [1] => 試 [2] => 一 [3] => 下 )
四、PCRE中的/u解析
在PHP中,正則的定界符可以為#、%、/等等。
在一個正則中有時后面會有些修飾符。那么他們都是什么意思呢?
比如:
%[\x{4e00}-\x{9fa5}]+%u
其中后面的修飾符u代碼表以正則匹配以utf-8的編碼格式匹配。
例子一:
<?php $strings = '測試一下'; $is_true = preg_match_all('%[\x{4e00}-\x{9fa5}]+%u', $strings, $match); var_dump($is_true);
打印結(jié)果如下:
Array( [0] => Array ( [0] => 測試一下 ) )
這里的[\x{4e00}-\x{9fa5}]是什么意思呢?
在PHP正則中\(zhòng)x用來表示16進(jìn)制。
中文的UNICODE碼點(diǎn)在4E00 - 9FFF (這里說的都是16進(jìn)制)
所以,正則匹配寫法就是區(qū)間[],[\x{4E00}-\x{9FFF}]
這兩個正則的效果都是一樣的。
相關(guān)文章
PHP+Ajax實(shí)時自動檢測是否聯(lián)網(wǎng)的方法
這篇文章主要介紹了PHP+Ajax實(shí)時自動檢測是否聯(lián)網(wǎng)的方法,通過Ajax調(diào)用連接百度效果實(shí)現(xiàn)檢測網(wǎng)站是否聯(lián)網(wǎng)的功能,需要的朋友可以參考下2015-07-07THINKPHP+JS實(shí)現(xiàn)縮放圖片式截圖的實(shí)現(xiàn)
上傳圖片 -- 保存并顯示圖片 -- JS獲取縮略圖參數(shù) -- 提交位置參數(shù) -- 圖片縮放保存類處理圖片 -- 保存截取的圖片--更新數(shù)據(jù)庫 -- 跳轉(zhuǎn)2010-03-03php實(shí)現(xiàn)字符串反轉(zhuǎn)輸出的方法
這篇文章主要介紹了php實(shí)現(xiàn)字符串反轉(zhuǎn)輸出的方法,實(shí)例分析了php中strrev函數(shù)的使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-03-03Json_decode 解析json字符串為NULL的解決方法(必看)
下面小編就為大家?guī)硪黄狫son_decode 解析json字符串為NULL的解決方法(必看)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-02-02PHP與Java對比學(xué)習(xí)日期時間函數(shù)
本文給大家介紹的是從Java和PHP進(jìn)行對比復(fù)習(xí)了下日期時間的處理函數(shù),并給出了一些示例,希望對大家能夠有所幫助2016-07-07PHP實(shí)現(xiàn)本地圖片轉(zhuǎn)base64格式并上傳
這篇文章主要介紹了PHP實(shí)現(xiàn)本地圖片轉(zhuǎn)base64格式并上傳,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-05-05