在我的脚本中我通过PHPs exec函数运行find命令。
setlocale(LC_CTYPE, "de_CH.UTF-8");
$searchString = escapeshellarg("*$searchString*");
$searchDirectory = escapeshellarg($searchDirectory);
$result = array();
exec("find $searchDirectory -type f -iname $searchString", $result);
有些文件的名称中包含特殊字符(例如ä,ö,ü),我希望用户也可以搜索这些文件。当我像
那样对搜索进行硬编码时exec("find $searchDirectory -type f -iname '*ä*'", $result);
我得到了预期的结果。但是一旦我使用用户输入它就不能按预期工作。我已经尝试避免将参数传递给escapeshellarg,因为我认为它可能存在UTF-8字符串问题,但结果是一样的。
有谁知道问题可能是什么?