[英]Regular Expression to replace line if exist, add line if not
我需要通讀 Apache httpd.conf 文件,並找到以下行:
#LoadModule blah blah
並取消注釋,即替換為
LoadModule blah blah
這里要注意的是,由於 conf 文件可能會有所不同,因此 LoadModule 行很可能已經被取消注釋。
也有可能該行根本不存在,在這種情況下,我的腳本必須在 conf 文件的末尾添加這樣一行。
知道如何在 PHP 中寫這個嗎?
嘗試這個:
preg_replace('/^#(LoadModule blah blah)/m', '$1', $str)
如果blah blah
應該是可變的,請將其替換為“ .+
”。
$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";
<?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);
?>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.