Сохраните файл decoder.php
на сервер с поддержкой php в папку с файлами которые вы хотите перекодировать. Все файлы в папке и поддиректориях будут перекодированы в соответствии с параметрами которые вы укажете.
<?php
$FROM = 'windows-1251'; // из какой кодировки конвертировать
$TO = 'utf-8'; // в какую кодировку конвертировать
$EXTENSIONS = array(
'html', // расширение файлов, с которыми скрипт будет работать
);
$decoder = new CDecoder($FROM, $TO, $EXTENSIONS);
class CDecoder
{
var $inCharset = '';
var $outCharset = '';
var $extenstions = array();
function needToConvert($str){
if(preg_match('#.#u', $str) ){
$utf = true;
}else{
$utf = false;
}
if($utf == false && stripos($this->outCharset, 'utf') !== false)
{
return true;
}
elseif($utf == true && stripos($this->outCharset, 'utf') === false)
{
return true;
}
return false;
}
function fileDecode($path){
if(!is_file($path)){
print "No such file ".$path." <br />";
return false;
}
$size = filesize($path);
if($size == 0){
print "File ".$path." is EMPTY<br />";
return false;
}
$file = fopen($path, 'r+');
$content = fread($file, $size);
if($this->needToConvert($content))
{
rewind($file);
ftruncate($file, 0);
fwrite($file, iconv($this->inCharset, $this->outCharset, $content));
print "Decoded <span style='font-weight:bold; color:#FF0000;'>".$this->inCharset."</span> to <span style='font-weight:bold; color:#0000FF;'>".$this->outCharset.'</span><br />'.$path.'<br /><br />';
}else{
print "File ".$path." already at ".$this->outCharset."<br>";
}
fclose($file);
}
function getSubDirs($dir){
if(is_dir($dir)){
$path = opendir($dir);
$subDirs = array();
while(($file = readdir($path)) !== false){
$filePath = $dir.'/'.$file;
if($file != '.' && $file != '..' && $filePath != $_SERVER['SCRIPT_FILENAME']){
$info = pathinfo($filePath);
if(is_dir($filePath)){
$subDirs[] = $filePath;
}elseif(in_array($info["extension"], $this->extensions)){
$this->fileDecode($filePath);
}
}
}
closedir($path);
return $subDirs;
}
}
public function CDecoder($inCharset, $outCharset, $extensions){
if(!empty($inCharset))
$this->inCharset = $inCharset;
else{
echo "No <span style='color:#F00;'>FROM</span> encoding given.<br>";
return;
}
if(!empty($outCharset))
$this->outCharset = $outCharset;
else{
echo "No <span style='color:#F00;'>TO</span> encoding given.<br>";
return;
}
if(!empty($extensions))
$this->extensions = $extensions;
else{
echo "No file extensions given <br>";
return;
}
$startDir = getcwd();
$dirs = $this->getSubDirs($startDir);
while($dirs){
$subDirs = $this->getSubDirs(reset($dirs));
$dirs = array_merge($dirs, $subDirs);
unset($dirs[0]);
echo '<pre>'; print_r($dirs); echo '</pre><hr />';
}
echo "<span style='font-weight:bold; font-size:3em; color:#00FF00;'>All operations done</span>";
}
}
Запустите скрипт. Для запуска просто откройте его в браузере. Например если адрес сайта domain.com и вы закачали скрипт в папку files, то откройте в браузере адрес http://domain.com/files/decoder.php
.