本篇文章給大家帶來的內容是關於php正則表達常用函數的總結(代碼示例),有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。

php中常用的正則表達式函數
* preg_match()
* preg_match_all()
* preg_replace()
* preg_filter()
* preg_grep()
* preg_split()
* preg_quote()
接下來對比講解:
講解中 $pattern 通常正則表達式 $subject 通常表示目標處理數據
定義一個方法 方便查看數據類型:
function show($val = null){
if(empty($val)){
//打印空
echo 'mull';
}elseif(is_array($val) || is_object($val)){
//打印數組或者對象
echo '
';';print_r($val);
echo '
}else{
//打印string int float
echo $val;
}
}
- preg_match()與preg_match_all()
/*方法簡單說明*/
preg_match($pattern,$subject,[array &$matches])
//匹配一次 第三個參數可選 匹配結果放置matches數組
preg_match_all($pattern,$subject,array &matches)
//匹配多次 三參必選 匹配結果放置matches數組
$pattern = '/[0-9]/';
$subject='b5fg4sgf3sd2f1g';
$m1 =preg_match($pattern,$subject,$arr1);
show($m1);
show($arr1);
/*
1
Array
(
[0] => 5
)
*/
$m2 =preg_match_all($pattern,$subject,$arr2);
show($m2);
show($arr2);
/*
5
Array
(
[0] => Array
(
[0] => 5
[1] => 4
[2] => 3
[3] => 2
[4] => 1
)
)
*/

2.preg_replace()與preg_filter()
/*方法簡單說明*/
/*
*
* preg_replace與preg_filter
* preg_replace($pattern,$replacement,$subject)
* //正則替換函數被替換對象是數組 返回全部
//正則替換函數 被替換對象是數組 僅返回被替換元素
* 聯想:str_repalce()
* echo str_replace("world","Shanghai","Hello world!");
* //得到Hello Shanghai!
//第一測 字符串中替換字符串 結論:此處preg_replace()與preg_filter()無區別
$pattern = '/[0-9]/';
$subject='b65fg4sgf3sd2f1g';
$replacement = '_';
$str1 = preg_replace($pattern,$replacement,$subject);
$str2 = preg_filter($pattern,$replacement,$subject);
echo '
';
show($str1);
echo '
';
show($str2);
/*
b__fg_sgf_sd_f_g
b__fg_sgf_sd_f_g
*/
//第二測 字符串中根據數組正則 替換 結論:此處preg_replace()與preg_filter()無區別
$pattern = array('/[123]/','/[456]/','/[789]/');
$subject='b123fg3456sgf3789f1g';
$replacement = array('天','地','人');
$str3 = preg_replace($pattern,$replacement,$subject);
$str4 = preg_filter($pattern,$replacement,$subject);
echo '
';
show($str3);
echo '
';
show($str4);
/*
b天天天fg天地地地sgf天人人人f天g
b天天天fg天地地地sgf天人人人f天g
*/
//第三測 數組中根據數組正則 替換 結論:此處展示preg_repalce()與preg_filter()區別
$pattern = array('/[123]/','/[456]/','/[789]/');
$subject=array('b','fg3','456','sgf','789','fg');
$replacement = array('天','地','人');
$str5 = preg_replace($pattern,$replacement,$subject);
$str6 = preg_filter($pattern,$replacement,$subject);
echo '
';
show($str5);
echo '
';
show($str6);
/*
Array
(
[0] => b
[1] => fg天
[2] => 地地地
[3] => sgf
[4] => 人人人
[5] => fg
)
Array
(
[1] => fg天
[2] => 地地地
[4] => 人人人
)
*/
3 . preg_grep($pattern, array $subject) //此處$subject只可以為一維數組
/*函數說明*/
preg_grep($pattern,array $input)//只可以匹配一維數組 返回匹配成功的數組元素
可以理解preg_grep()為閹割版 preg_filter()
只做了匹配 不作替換
$pattern = '/[0-9]/';
$subject=array('b','fg3','456','sgf','789','fg');
$arr = preg_grep($pattern,$subject);
show($arr);
/*
Array
(
[1] => fg3
[2] => 456
[4] => 789
)
*/
4 . preg_split($pattern,$subject)//一匹配成功為切割點切割字符串成數組
可以理解preg_split()升級版的explode()
$pattern = '/[0-9]/';
$subject='bfg3456sgf789fg';
$arr = preg_split($pattern,$subject);
show($arr);
/*
Array
(
[0] => bfg
[1] =>
[2] =>
[3] =>
[4] => sgf
[5] =>
[6] =>
[7] => fg
)
*/
5 . preg_quote($str) 正則運算符轉譯
/*
* preg_quote($str) 正則運算符轉譯
* . \ + * ? [ ^ ] $ () {} = ! < > | : -
*
*/
echo '
';
$str = "qewr{asdf}[123]";
$str =preg_quote($str);
print_r($str);
/*
qewr\{asdf\}\[123\]
*/
簡單總結通性:
preg_ 開頭
除preg_quote函數以外,第一個參數都是正則表達式
preg_match 表單驗證等
preg_replace 非法詞語過濾等
閱讀更多 美食代碼喵 的文章