使用php,grep和regex来搜索和替换文件中的代码行

时间:2010-09-14 04:22:07

标签: php regex grep

我有一个php文件,可以完美地读取其他文件的内容,并将它们作为字符串返回。

$contents = $file->read(); // return as string.

我需要能够搜索和替换某些行

$this->Session->setFlash开头并以, true));结尾的行必须替换为

以...开头的行 $this->Session->setFlash, true), 'default', array('class'=>'flash_failure'));

结尾

我的机器上有grep,如果有帮助的话。

最后在内容改变之后,我有一个将内容写回的功能

$file->write($contents);

我知道这有助于找到线条,但我不知道如何更换。

^.*Session->setFlash.*, true\)\);$

2 个答案:

答案 0 :(得分:1)

您可以尝试:

$contents = $file->read(); // return as string.

// change contents.
$contents = preg_replace('/^(\$this->Session->setFlash.*?), true\)\);$/',"$1, true), 'default', array('class'=>'flash_failure'));",$contents);

$file->write($contents);

答案 1 :(得分:0)

因此,解决方案是:

$contents = preg_replace('/^(.*Session->setFlash.*, true\))\);$/m',
                                         "$1, 'default', array('class'=>'flash_failure'));", $contents);

多线修改器是关键。