使用php、grep和regex搜索和替换文件中的代码行
我有一个php文件,可以完美地读取其他文件的内容,并将其作为字符串返回使用php、grep和regex搜索和替换文件中的代码行,php,regex,grep,Php,Regex,Grep,我有一个php文件,可以完美地读取其他文件的内容,并将其作为字符串返回 $contents = $file->read(); // return as string. 我需要能够搜索和替换某些行 以$this->Session->setFlash开头并以,true)结尾的行必须替换为 以开头的行 $this->Session->setFlash并以结束,true),“default”,数组('class'=>“flash\u failure”) 如果有帮助的话,我的机器里有grep 最后
$contents = $file->read(); // return as string.
我需要能够搜索和替换某些行
以$this->Session->setFlash
开头并以,true)结尾的行代码>必须替换为
以开头的行
$this->Session->setFlash
并以结束,true),“default”,数组('class'=>“flash\u failure”)代码>
如果有帮助的话,我的机器里有grep
最后,在内容更改后,我有一个函数将内容写回
$file->write($contents);
我知道这有助于找到线路,但我不知道如何更换
^.*Session->setFlash.*, true\)\);$
您可以尝试:
$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);
您可以尝试:
$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);
因此,解决办法是:
$contents = preg_replace('/^(.*Session->setFlash.*, true\))\);$/m',
"$1, 'default', array('class'=>'flash_failure'));", $contents);
多行修改器是关键。因此解决方案是:
$contents = preg_replace('/^(.*Session->setFlash.*, true\))\);$/m',
"$1, 'default', array('class'=>'flash_failure'));", $contents);
多行修饰符是关键。您的代码正在工作,但当我执行$contents=file\u get\u contents($filename)时,它对$contents不起作用;您的代码可以工作,因为我在这里测试了不工作的确切含义是什么?使用file\u get\u contents
获取$contents
后,请尝试打印$contents
的值。文件中有多行。所以我怀疑我需要设置a/m修饰符。但是我不能让它工作。有关更多详细信息,请参见此。您的代码正在工作,但当我执行$contents=file\u get\u contents($filename)时,它在$contents上不起作用;您的代码可以工作,因为我在这里测试了不工作的确切含义是什么?使用file\u get\u contents
获取$contents
后,请尝试打印$contents
的值。文件中有多行。所以我怀疑我需要设置a/m修饰符。但是我不能让它工作。有关更多详细信息,请参见此。