«Использование неопределенной константы» как исправить замену во всех файлах - PullRequest
0 голосов
/ 15 декабря 2018

У меня есть очень старый проект php4-5, который нужно перенести на php7.2

В нем много кодов, таких как:

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

Это сейчас в моем локальном Ubuntu 18 apache & php-server.Как я могу найти и заменить все файлы .php, чтобы добавить кавычки?Я не могу добавить двойные кавычки, если [] содержит знак $ (переменная), конечно, а также, если он уже содержит "или '

Я знаю немного preg, но не достаточно .. У меня есть возвышенный текст 3 иnotepad ++, который также может заменить правильное регулярное выражение, если только теперь. Помогите, пожалуйста!

Ответы [ 2 ]

0 голосов
/ 15 декабря 2018

да, это помогло, спасибо!Он также соответствует $ array [12], что означает, что числа тоже заключаются в кавычки.Из irc узнал, что это работающее решение:

\[(\w*[A-Za-z]\w*)\]

substitution: ["\1"]
0 голосов
/ 15 декабря 2018

Использование Блокнота ++

  • Ctrl + H
  • Найти что: \$\w+\[\K([^$"'\]]+)
  • Заменить на:"$1"
  • check Обтекание
  • check Регулярное выражение
  • Заменить все

Объяснение:

\$              # $ 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]
...