修改我的PHP正则表达式为“ escapeshellcmd”

时间:2018-06-23 10:58:46

标签: php regex shell preg-match

我正在尝试建立一个用于排序/删除文件的过滤器;

但是,经过测试,我注意到有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!(Japan).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;
    }

}

非常感谢您的帮助!

0 个答案:

没有答案