我需要阅读Apache httpd.conf文件,找到以下行:
#LoadModule blah blah
并取消注释,即用
替换它LoadModule blah blah
这里的问题是,由于conf文件可能会有所不同,因此LoadModule行很可能已经取消注释。
也有可能该行根本就不存在,在这种情况下,我的脚本必须在conf文件的末尾添加这样一行。
知道怎么用PHP写这个吗?
答案 0 :(得分:2)
试试这个:
preg_replace('/^#(LoadModule blah blah)/m', '$1', $str)
如果blah blah
应该是变量,请将其替换为“.+
”。
答案 1 :(得分:2)
$line = "LoadModule blah blah";
$input = "your config file";
$count = 0;
$limit = 1; // replace first occurrence only, change to -1 to replace all
$output = preg_replace("/^#?(?=\Q$line\E)/m", "", $input, $limit, $count);
if ($count == 0) $output = $output."\n$line";
答案 2 :(得分:1)
<?php
$found = false;
$f = fopen('apache.conf', 'r+');
while($line = fgets($f)) {
if(preg_match("/^(#*)(\s*)LoadModule\s+blah.*/", $line)) {
$found = true;
if(substr($line, 0, 1) == '#') {
fputs($f, preg_replace("/^(#+)(\s*)/", "", $line));
}
break;
}
}
if(!$found) {
fputs($f, "LoadModule blah blah\n");
}
fclose($f);
?>