php exec со специальными символами - PullRequest
2 голосов
/ 28 марта 2011

в моем скрипте я запускаю команду find через PHP-функцию exec.

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, но результат был таким же.

...