Иногда нужно обойти все файлы в папке и поменять их кодировку с одной на другую. Например вы разрабатываете какой-нибудь модуль для CMS и решили убедиться что он корректно работает на сайтах с различной кодировкой.
Естественно вам потребуется поменять кодировку файла, если вы «Линуксойд» — то для вас не составит труда написать bash скрипт, но если нет и вы знаете php можно тоже самое в Linux сделать и при помощи php функции.
Код функции ниже.
/** * Функция не проверяет наличие в системе консольной программы enconv * Рекурсивное перекодирование файлов из одной кодировки * в другую при помощи Linux программы enconv * @param string $path абсолютный путь к папке с файлами с слешем на конце * @param array $mask массив расширений которые нужно обработать вида array('.php', '.txt') * @param string $decoding Кодировка файлов которую нужно получить */ function decodingFile($path, $mask, $decoding) { $struct = scandir($path); foreach ($struct as $key => $value) { if ($value == '.' OR $value == '..') { continue; } if (is_dir($path . $value . '/')) { decodingFile($path . $value . '/', $mask, $decoding); } elseif (is_file($path . $value)) { foreach ($mask as $fileTrue) { if (stripos($value, $fileTrue) === FALSE) { continue; } if (is_file($path . $value)) { echo $path . $value . "\n"; system('enconv -x' . $decoding . ' ' . $path . $value); } } } } } //Использование $folder = '/home/djo/NetBeansProjects/lab1.b2/bitrix/modules/zixnru.inomarka/'; $mask = array('.php', '.txt'); decodingFile($folder, $mask, 'UTF-8');
В примере:
$folder = полный путь до каталога с файлами
$mask =массив с расширениями для обхода