config.php中的内容如下:
$config['base_url'] = 'http://localhost/';
要替换为:
$config['base_url'] = '192.168.0.102';
可以看到,需要替换的只是等号后的内容,而替换的条件是config的key即base_url相同
替换语句为:其中$ini="base_url" $value="192.168.0.102"
$str2 = preg_replace("/\\\$config\['".$ini."']\s*=\s*'(.*)';/","\$config['".$ini."'] = '".$value."';",$str);
这里需要有几点说明:
1、preg_replace的第一参数为正则表达式,第二参数是普通字符串。
2、\\\$:因为$在这里是表示php的变量,而不是表达式的结束,所以需要转义。我个人理解,需要三个"\"的原因是php解析时经过两个过程,一、正则表达式规则,二、php本身的解析
3、\\\$可以用[$]来代替
4、[ 需要转义,] 和 ' 不需要转义
5、等号两边有空格,或者没有,所以空格用\s*来表示。
6、第二个参数中的$也需要转义,因为是在字符串中。