Demo
1 2 3 4 5 6 7 8 9 10 11 12 13
| <?php $result = array( 0, $v['user'] ? round($v['day1']/$v['user'], 4) * 100 : 0; $v['user'] ? round($v['day2']/$v['user'], 4) * 100 : 0; $v['user'] ? round($v['day3']/$v['user'], 4) * 100 : 0; $v['user'] ? round($v['day4']/$v['user'], 4) * 100 : 0; $v['user'] ? round($v['day5']/$v['user'], 4) * 100 : 0; $v['user'] ? round($v['day6']/$v['user'], 4) * 100 : 0; $v['user'] ? round($v['day7']/$v['user'], 4) * 100 : 0; $v['user'] ? round($v['day14']/$v['user'], 4) * 100 : 0; $v['user'] ? round($v['day30']/$v['user'], 4) * 100 : 0; );
|
需求
将Demo中的所有$v[‘dayN’]替换为($v[‘user’] - $v[‘dayN’])(其中N为1,2,3,4,5,7,14,30这几个数字)
分析
实现
1
| 4,12s/$v\['day\(\d\+\)'\]/($v['user'] - $v['day\1'])/
|
或者用下面这个更加简短:
1
| 4,12s/\($v\['day\d\+'\]\)/($v['user'] - \1)/
|
说明
- 4,12是要替换的起止行数
- 正则中的特殊符号需要转义,如括号(())、方括号([])、加号(+)等
- 获取匹配的结果用下划线加数字,如\1获取匹配的每一个结果