1.正则表达式参数说明
建议用$pattern = 正则表达式 $subject = 匹配的目标数据 这个两个参数来命名。
2.正则表达式数据输出函数简介
<?php
function show($var = null){
if (empty($var)){
echo 'null';
}elseif (is_array($var) || is_object($var)){
echo '<pre>';
print_r($var);
echo '</pre>';
}else{
echo $var;
}
}
?>
3.正则表达式之preg_match ,preg_match_all
PHP中常用的正则表达式函数:preg_match()与preg_match_all()
preg_match($pattern,$subject,[array &$matches])第三个参数可选,匹配一次
preg_match_all($pattern,$subject,[array &$matches])第三个参数必填,匹配所有
第三个参数有&符号,表示第三个参数是引用传递
return 匹配到结果的次数;
<?php
$pattern = '/[0-9]/';#正则表达式,匹配0-9的数值
$subject = 'dfsfs26f7sdf84c';#要匹配的目标数据
$m1 = $m2 = array();
$t1 = preg_match($pattern,$subject,$m1);#第三个参数可选,匹配一次
$t2 = preg_match_all($pattern,$subject,$m2);#第三个参数必填,匹配所有
show($m1);#匹配到的数放到数组m1里
echo '<hr />';#分隔线
show($m2);#匹配到的数放到数组m2里
echo '<hr/>';
show($t1.'||'.$t2);#匹配的次数
function show($var = null){
if (empty($var)){
echo 'null';
}elseif (is_array($var) || is_object($var)){
echo '<pre>';
print_r($var);
echo '</pre>';
}else{
echo $var;
}
}
?>
运行结果:
4.正则表达式函数之preg_replace与preg_filter
php中常用的正则表达式函数
preg_replace 与preg_filter
preg_replace($pattern,$replacement,$subject)
preg_filter($pattern,$replacement,$subject)
字符串替换:str_replace(…)
str_replace(find,replace,string,count)
参数 | 描述 |
find | 必需。规定要查找的值。 |
replace | 必需。规定替换 find 中的值的值。 |
string | 必需。规定被搜索的字符串。 |
count | 可选。对替换数进行计数的变量。 |
<?php
//$pattern = '/[0-9]/';#正则表达式,匹配0-9的数值
$pattern = array('/[0123]/','/[456]/','/[789]/');#数组:正则表达式,匹配0-9的数值
//$subject = 'dfsfs26f7sdf84c';#要匹配的目标数据
$subject = array('dfsf','s26f','7sd','f8','4c');#要匹配的目标数据
//$replacement = '加油';#把匹配到的值替换成“加油”
$replacement = array('加','油','啊');#匹配到0123任意一位,就改成“加”,匹配456任意一位,就替换成“油”
$str1 = preg_replace($pattern,$replacement,$subject);
$str2 = preg_filter($pattern,$replacement,$subject);
show($str1);#匹配到的数放到数组m1里
echo '<hr />';#分隔线
show($str2);#匹配到的数放到数组m2里
?>
运行的结果,可见两个函数的区别:
注释部分运行结果,两个函数输出结果相同:
5.正则表达式函数之preg_grep
preg_grep($pattern,array $input) #阉割版preg_filter(..),只匹配不替换,只返回匹配到的数组里的数据
$pattern = '/[0-9]/';#正则表达式,匹配0-9的数值
$subject = array('dfsf','s26f','7sd','f8','4c');#要匹配的目标数组
$arr = preg_grep($pattern,$subject);
show($arr);#匹配到的数放到数组里
返回结果,少了【0】=>‘dfsf’:
6. 正则表达式函数之preg_split
preg_split($pattern, $subject)
与explode(…)功能很相似
explode(separator,string,limit)
参数 | 描述 |
separator | 必需。规定在哪里分割字符串。 |
string | 必需。要分割的字符串。 |
limit | 可选。规定所返回的数组元素的数目。 可能的值:
|
例如:explode(‘,’,$str),把字符串$str,以‘,’为界分割成数组
<?php
$pattern = '/[0-9]/';#正则表达式,匹配0-9的数值
$subject = '每天1都要,很2努力0';#要匹配的目标数据
$arr = preg_split($pattern,$subject);
show($arr);#输出结果
?>
输出结果:
7. 正则表达式函数之preg_quote
preg_quote($str)
正则运算符转译
<?php
$str = 'qwer{asdf}[1234]';
$str = preg_quote($str);
show($str);#输出结果
?>
输出结果:qwer\{asdf\}\[1234\]
总结
1.都以preg_开头
2.除了preg_quote函数外,第一个参数都是正则表达式
#使用场景
preg_match 表单验证等
preg_replace 非法词语过滤