php之正则表达式函数总结

分享 剑歌丶 ⋅ 于 2017-12-08 20:03:48 ⋅ 1967 阅读

php之正则表达式函数总结

  • 匹配

    用于匹配常用的函数有两个,分别是preg_matchpreg_match_all 看代码:

//preg_match($pattern, $subject, &$match, [$flags=0], [$offset=0]) 一般三个参数

$pattern = '/[0-9]/';  //正则
$subject = 'abc1def2ghi3klm4';    //需要匹配的字符串
$return = preg_match($pattern, $subject, $matches);
echo $return; //1  因为匹配到了1个就会停止匹配
print_r($matches); // ['1']  将所有满足正则规则的匹配放到数组里。

//preg_match_all($pattern, $subject, $matches,...)
$pattern = '/[0-9]/';//正则字符串
$subject = 'abc1def2ghi3klm4';//需要匹配的目标字符串
$return = preg_match_all($pattern, $subject, $matches);
echo $return;//4    因为会匹配所有的
print_r($matches);//[0=>['1','2','3','4']] 注意是个二维数组。
  • 替换

    用于替换常用的函数也有两个preg_replacepreg_filter,这两个灰常的相似!!! 看代码:

//preg_replace($pattern, $replacement, $subject)

$pattern = '/[0-9]/';
$replacement = '嘿嘿嘿';
$subject = 'a1b2c3';
$return = preg_replace($pattern, $replacement, $subject);
echo $return; //'a嘿嘿嘿b嘿嘿嘿c嘿嘿嘿'

//preg_filter($pattern, $replacement, $subject)     //和preg_replace 没有任何变化
$pattern = '/[0-9]/';
$replacement = '嘿嘿嘿';
$subject = 'a1b2c3';
$return = preg_filter($pattern, $replacement, $subject);
echo $return; //'a嘿嘿嘿b嘿嘿嘿c嘿嘿嘿'

//但是$pattern 和 $subject都是数组呢
$pattern = array('/[0-3]/', '/[4-6]/', '/[7-9]/');
$replacement = array('小', '中', '大');
$subject = array('a', 'b', '1as', 'd', 's5d', '7qq');
$return = preg_replace($pattern, $replacement, $subject);
print_r($return);
//结果
Array
(
    [0] => a
    [1] => b
    [2] => 小as
    [3] => d
    [4] => s中d
    [5] => 大qq
) 

$pattern = array('/[0-3]/', '/[4-6]/', '/[7-9]/');
$replacement = array('小', '中', '大');
$subject = array('a', 'b', '1as', 'd', 's5d', '7qq');
$return = preg_filter($pattern, $replacement, $subject);
print_r($return);
//结果
Array
(
    [2] => 小as
    [4] => s中d
    [5] => 大qq
)
  • 数组匹配 + 分割

    分别是preg_greppreg_split 看代码:

//趁热打铁  其实preg_grep呢 就是preg_filter的阉割版  只匹配  不替换而已
//preg_grep($pattern, $subject)
$subject = ['r', 'a2', 'b3', 'c', 'd'];
$pattern = '/[0-9]/';
$fl_array = preg_grep($pattern, $subject);
print_r($fl_array);
//结果:
Array
(
    [1] => a2
    [2] => b3
)    //注意索引

//preg_split($pattern, $subject) 返回分割后的数组
$subject = 'a132b456c777d';
$pattern = '/[0-9]+/';   匹配至少一个数字
$return = preg_split($pattern, $subject);
print_r($return);
//结果:
Array
(
    [0] => a
    [1] => b
    [2] => c
    [3] => d
)
回复数量: 0
    暂无评论~~
    • 请注意单词拼写,以及中英文排版,参考此页
    • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
    • 支持Emoji表情,在输入的时候只需要 ":" 就可以自动提示了
    • 上传图片, 支持拖拽和剪切板黏贴上传, 格式限制 - jpg, png, gif
    • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
    Ctrl+Enter