php中常用正则表达式函数
本文是慕课网上鬼斧神工之正则表达式课程的阅读笔记-1
<?php
preg_match($pattern,$subject)
preg_match_all($pattern,$subject,array&$matches)
preg_replace($pattern,$replacement,$subject)
preg_filter($pattern,$replacement,$subject)
preg_grep($pattern,array $input)
preg_split($pattern,$subject)
preg_quote($str)
?>
其中:
- $pattern=正则表达式
- $subject = 匹配的目标数据
1. show()函数
/**
* @name : show
* @param $var : input data
* @return void
*/
function show($var = null) {
if(empty($var)) {
echo 'null';
} elseif(is_array($var) || is_object($var)) {
// array,object
echo '<pre>'; // 用pre标签包围的块可以整齐缩进
print_r($var);
echo '</pre>';
} else {
// string,int,float...
echo $var;
}
}
2. preg_match, preg_match_all函数
2.1 代码片段
// preg_match, preg_match_all
$pattern = '/[0-9]/';
$subject = 'weuyr3ui76as83s0ck9';
$m1 = $m2 = array();
$res1 = preg_match($pattern, $subject, $m1);
$res2 = preg_match_all($pattern, $subject, $m2);
show($m1);
echo '<hr />';
show($m2);
echo '<hr />';
show($res1.'||'.$res2);
2.2 运行结果
3. preg_replace(类str_replace), preg_filter函数
3.1 代码片段
// preg_replace(str_replace), preg_filter
// $pattern = '/[0-9]/';
$pattern = array('/[0123]/', '/[456]/', '/[789]/');
$subject = 'weuyr3ui76as83s0ck9';
$subject = array('weuy', 'r', '3ui76', 'as', '83s0ck9');
// $replacement = '慕女神';
$replacement = array('慕', '女', '神');
$str1 = preg_replace($pattern, $replacement, $subject);
$str2 = preg_filter($pattern, $replacement, $subject);
show($str1);
echo '<hr />';
show($str2);
3.2 运行结果
4. preg_grep, preg_split(类explode)
4.1 代码片段
// preg_grep 阉割版的preg_filter,只匹配不替换
$pattern = '/[0-9]/';
$subject = array('weuy', 'r', '3ui76', 'as', '83s0ck9');
$arr = preg_grep($pattern, $subject);
show($arr);
// preg_split(explode)
$pattern = '/[0-9]/';
$subject = '慕5女2神,0约吗?';
$arr = preg_split($pattern, $subject);
show($arr);
4.2 运行结果
5. preg_quote 正则运算符转义
5.1 代码片段
// preg_quote 正则运算符转义
$str = 'qwer{asdf}[1234]';
$str = preg_quote($str);
show($str);
5.2 运行结果
qwer\{asdf\}\[1234\]
知识小结
- pre标签用来格式化输出
- preg_match函数返回值为0或1