在PHP应用程序

时间:2017-07-07 09:19:37

标签: php regex bash grep

在Zend Framework 2应用程序中,有8/9个模块。在这些模块中,View有超过15个奇怪的phtml页面,其中包含像

这样的硬编码链接
href='/controller/action'

我需要做的是构建一个bash脚本,该脚本将通过模块查找视图上面有href的位置,并将其更改为如下所示

href="<?php $this->url('controller'), action->'action' ?>"

2 个答案:

答案 0 :(得分:2)

您可以循环访问获取文件名的模块,然后:

 sed -r "s%href='/(.*)/(.*)'$%href=\"<?php $this->url('\1'), action->'\2' ?>\"%" filename

s%原始文本%替换文本%

使用-r启用正则表达式的解释

确保使用\

转义替换文本中的引号

使用(。*)作为动态文本的占位符,然后在替换文本中将它们称为\ 1和\。

答案 1 :(得分:0)

一些文本编辑器可以执行其他命令,我会使用

find . -name '*.php' -exec perl -i.bak -pe \
   'BEGIN{$str=shift;$rep=shift}s/\Q$str\E/$rep/g' \
   'href='\''/controller/action'\' \
   'href="<?php $this->url('\''controller'\''), action->'\''action'\'' ?>"' \
   {} +

应修改此命令:请参阅man find了解选项