“使用未定义的常量”如何修复所有文件中的替换

时间:2018-12-15 10:53:39

标签: regex php-7.2

我有一个非常老的php4-5项目,需要迁移到php7.2

它有很多代码,例如:

echo '<img src="img/'.$r[imgurl1].'"
strip_tags($r[details])

现在位于我的本地ubuntu 18 apache&php-server中。 如何搜索和替换所有.php文件以添加引号? 当然,如果[]中包含$(变量)符号,则不能添加双引号 并且如果它已经包含“或”

我对预浸料了解很少,但还不够。 我有崇高的text3和notepad ++,如果现在只有正确的正则表达式,它们也可以代替。请帮忙!

2 个答案:

答案 0 :(得分:1)

使用记事本++

  • Ctrl + H
  • 查找内容:\$\w+\[\K([^$"'\]]+)
  • 替换为:"$1"
  • 检查环绕
  • 检查正则表达式
  • 全部替换

说明:

\$              # $ sign
\w+             # 1 or more word characters
\[              # opening square bracket
\K              # forget all we have seen until this position
(               # start group 1
    [^$"'\]]+   # 1 or more any character that is not $, ", ', ]
)               # end group

给出:

echo '<img src="img/'.$r[imgurl1].'"
strip_tags($r[details])
$abc = $def[$xxx]

给定示例的结果

echo '<img src="img/'.$r["imgurl1"].'"
strip_tags($r["details"])
$abc = $def[$xxx]

使用php

$in = <<<'EOD'
echo '<img src="img/'.$r[imgurl1].'"
strip_tags($r[details])
$abc = $def[$xxx]
EOD;
$res = preg_replace('/\$\w+\[\K([^$"\'\]]+)/', '"$1"', $in);
echo $res;

输出:

echo '<img src="img/'.$r["imgurl1"].'"
strip_tags($r["details"])
$abc = $def[$xxx]

答案 1 :(得分:0)

是的,这对您有所帮助! 它还与$ array [12]匹配,这意味着数字也被引用了。 从irc得知这是可行的解决方案:

for (int i = 0; br.readLine() != null; i++) {
相关问题