Я создаю небольшой алгоритм для исправления всего исходного кода msgid, чтобы он работал нормально:
$ find . -name '*.php' | xargs perl -pi -e 's/\$t\(\047bad msgid\047\);/\$t\(\047good msg id\047\);/g'
Я хочу создать выполнение внутри foreach скрипта php, например:
$cmd = "find {$projectPath} -name '*.php' | xargs perl -pi -e 's/\$t\('\047'" . preg_quote($bad) . "\047\)/\$t\(\047" . preg_quote($good) . "\047\)/g'";
exec(escapeshellarg($cmd));
Это сумасшествие, я пробую все, escapeshellarg, смешиваю двойные кавычки с одинарными кавычками, кавычки с обратной косой чертой ... после 4 часов я могу сказать, черт возьми, это и shell exec cmd. пс. к черту тоже регулярный опыт
есть идеи запустить эту команду внутри метода exec?
Решение для поиска замены $t('msgid с ошибкой') на $t('правильный msgid') внутри всего проекта с использованием php, perl, exec (проверено на Mac)
+1 час и 2 оборота, спасибо за предложение @Marc B:
$cmd = "find {$projectPath} -name '*.php' | xargs perl -pi -e 's|\\\$t\(\\047" . str_replace("'", "\\047", preg_quote($bad)) . "\\047\)|\\\$t\(\\047" . str_replace("'", "\\047", preg_quote($good)) . "\\047\)|g'";
exec($cmd);