在Zend Framework 2应用程序中,有8/9个模块。在这些模块中,View有超过15个奇怪的phtml页面,其中包含像
这样的硬编码链接href='/controller/action'
我需要做的是构建一个bash脚本,该脚本将通过模块查找视图上面有href的位置,并将其更改为如下所示
href="<?php $this->url('controller'), action->'action' ?>"
答案 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
了解选项