php 正则表达式的使用
要点:php正则表达式要用双引号,且要用“/ /”斜线做开始结束。
1、preg_match 、 preg_match_all
两者的区别:第一次匹配成功后就会停止匹配,如果要实现全部结果的匹配,即搜索到subject结尾处,则需使用 preg_match_all()
int preg_match(pattern, subject)
int preg_match_all(pattern, subject, matches)
两者函数都是 返回值是0或1。找不到返回0。
//遍历“/log”文件夹,匹配文件名储存到数组 $logFileArr = scandir("/log"); $fileArr = ""; for($i=0; $i<count($logFileArr); $i++) { if(preg_match("/^JD_cloud.log[.]*[0-9]*$/",$logFileArr[$i],$m)) { // print_r($m); $fileArr[] = "/log/".$m[0]; } }
NOTICE:
$str = "1,2,9"; if(preg_match("/^(([0-8]{1}),)*([0-8]{1})$/",$str,$matches)) { print_r($matches); echo "success"; } else { echo "error"; }
如果正则表达式
/^(([0-8]{1}),)*([0-8]{1})$/
里没有加入^ $开关和结尾的正则符时,会出现匹配成功的情况。
- ^:表示匹配字符串的开始,也即该字符串是独立的开始而不是包含在某个字符串之内
- $:表示匹配字符串的结束,也即该字符串是独立的结束
2、根据正则表达式进行替换
mixed preg_replace(pattern, replacement, subject)
进行字符串或数组的正则表达式的替换。可替代preg_grep
<? // 将“:”替换为“-” $item = "F0:FF:20:DE:80" $item = preg_replace("/:/","-",$item); ?>
3、在数组中查找符合的正则表达式的内容
array preg_grep ( string $pattern , array $input [, int $flags = 0 ] )
4、 一些常用的正则表达式
匹配Ip, 子网掩码, 网关
if(preg_match($preg_str, $ip)&& preg_match($preg_str,$gateway) && preg_match($preg_str,$submask) ) { if( (ip2long($ip) & ip2long($submask)) != (ip2long($gateway) & ip2long($submask))) { // $dataArr['NetmateGateway'] = $dataArr['NetmateIPAddr']; $gateway = $ip; } $cUsrConf->set_ini_file("network","ipaddr",$ip); $cUsrConf->set_ini_file("network","gateway",$gateway); $cUsrConf->set_ini_file("network","mask",$submask); }else{ $alertStr ="ip、子网掩码及网关设置不正确"; }