Изменение моего регулярного выражения PHP для "escapeshellcmd" - PullRequest
0 голосов
/ 23 июня 2018

Я пытаюсь создать фильтр для сортировки / удаления файлов;

Однако при тестировании я заметил 2 файла, которые проходят через сеть, несмотря на то, что они названы с идентификатором страны "(Япония)" вконец.Я думаю, что это из-за их странных символов (знак доллара в одном и 3 периода подряд в другом)

2 файла:

Quiz$Millionaire - Waku Waku Party (Japan).zip
...Iru! (Japan).zip

Я получаю ошибку нижепри запуске скрипта.Он правильно отображает файл, но затем при попытке ввода mv сообщает об этом, так как в середине строки отсутствует $ Millionaire!

Quiz$Millionaire (Japan) (v1.0).zip is a foreign language release. Moved to Removed folder.
mv: cannot stat 'Quiz (Japan) (v1.0).zip': No such file or directory

К сожалению, для другого файла (... Iru!(Япония) .zip) Я даже не получаю совпадение / эхо

Мне сказали, что мне нужно использовать $thisGame = escapeshellcmd($thisGame); в приведенном ниже коде, но когда я это делаю, все мои регулярные выражения портятся.иначе - так что я думаю, что должен изменить свое регулярное выражение - но я новичок и не знаю, как это исправить!Заранее большое спасибо за вашу помощь - код ниже:

$gameList = trim(shell_exec("ls -1"));
$gameArray = explode("\n", $gameList);

shell_exec('mkdir -p Removed');

// Do this magic for every file
foreach ($gameArray as $thisGame)
{
    if (!$thisGame) continue;
    // Probably already been removed
    if (!file_exists($thisGame)) continue;

    // Non-Engish speaking countries e.g. (France) or (Japan)
    if (preg_match('%\((Asia|Austria|Brazil|China|Denmark|Finland|France|Germany|Greece|Hungary|Israel|Italy|Japan|Japan, Asia|Korea|Netherlands|Norway|Poland|Portugal|Russia|Scandinavia|Spain|Sweden)\)%', $thisGame))
    {
        echo "{$thisGame} is a foreign language release. Moved to Removed folder.\n";
        shell_exec("mv \"{$thisGame}\" Removed/");
        continue;
    }

}

Большое спасибо за вашу помощь!

...