Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Автоматическая перекодировка загружаемого на сервер текстового файла.

Сообщения:  [1-3] 

 
 автор: du   (31.03.2007 в 22:44)   письмо автору
 
   для: Gemor   (31.03.2007 в 18:09)
 

Попробуйте использовать iconv(), вместо вашей функции, если дело именно в этом.

   
 
 автор: Gemor   (31.03.2007 в 18:09)   письмо автору
 
   для: Gemor   (30.03.2007 в 21:46)
 

Хм, неожиданно =)

   
 
 автор: Gemor   (30.03.2007 в 21:46)   письмо автору
 
 

<?
require 'config.php';

// Если в конфиге разрешено, то запускаем скрипт загрузки
if($upload == 1)
{
require 
'translit.php';
require 
'header.php';
print 
$top;

$go $_POST['go'];

// Если переменная не равна 1, то показываем форму для загрузки
if($go != 1)
{
print 
'<div class="telo">
<form action="" method="post" enctype="multipart/form-data">
<div>
В имени файла разрешены латинские буквы, цифры и знак _<br/>
Символов не менее 2 и не более 32<br/>
Расширение .txt<br/>
Кодировка windows-1251 (стандартная для windows)<br/>
Максимальный размер '
.$upload_size.' кб<br/>
<input type="hidden" name="go" value="1"/><br/>
<input type="file" name="filename"/><br/>
<input type="checkbox" name="trans" value="1"/>Транслит <a href="translit.php?tr=1">(?)</a><br/>
<input type="submit" value="Загрузить"/>
</div>
</form>
</div>'
;
}
else
{
// Если переменная равна 1, то проверяем загружаемый файл
// Размер
if($_FILES['filename']['size'] > 1024*$upload_size)
{
print 
'<div class="telo">
Размер файла превышает '
.$upload_size.' кб
</div>'
.$foot;
exit();
}
// Имя
if (!preg_match("/^([0-9a-zA-Z_ ]{2,32}+)(\.txt+)$/i"$_FILES['filename']['name']))
{
print 
'<div class="telo">
В имени файла найдены запрещенные символы<br/>
Разрешаются английские буквы, цифры и знак _<br/>
Расширения файлов ТОЛЬКО .txt
</div>'
.$foot;
exit();
}
// Тип
if($_FILES['filename']['type'] != 'text/plain')
{
print 
'<div class="telo">
Не верный тип файла
</div>'
.$foot;
exit();
}

// Если пользователь выбрал транслит, то подставляем к имени в начале --
if($_POST['trans'] == 1)
{
$name '--'.trim($_FILES['filename']['name']);
$name preg_replace("/(\s+)/",'_',$name);
}
else
{
$name trim($_FILES['filename']['name']);
$name preg_replace("/(\s+)/",'_',$name);
}
if(
$small == 1)
{
$name strtolower($name);
}

// Загружаем файл на сервер в аплоад папку

if(copy($_FILES['filename']['tmp_name'],$upload_dir.$name))
{
if(
strpos($name '--') !== false)
{
$name trans($name);
}
else
{
$name trans2($name);
}

/////////////////
// Перекодировка из UTF-8 в windows-1251

require 'functions.php';
$file = @fopen($upload_dir.$name,'r');
$file_content = @fread($file);
@
fclose($file);
$file_new utf ($file_content);
if(
$file_new != $file_content)
{
$file = @fopen($upload_dir.$name,'w');
$file = @fputs($file$file_new);
@
fclose($file);
}

/////////////////////////


$name strtok($name,'.');
// Инфа о загруженном файле
print '<div class="telo">
Файл загружен<br/>
Имя файла: '
.$name.'<br/>
Размер файла: '
.intval($_FILES['filename']['size']/1024).' кб<br/>
Файл будет опубликован после проверки модератором
</div>'
;
}
else
{
print 
'<div class="telo">
Ошибка загрузки файла
</div>'
;
}
}

print 
$foot;

}
else
{
header("Location: /");
}
?>





//Функция utf

function utf ($str)
{
$win = array('А','Б','В','Г','Д','Е','Ё',
'Ж','З','И','Й','К','Л','М','Н','О','П',
'Р','С','Т','У','Ф','Х','Ц','Ч','Ш','Щ',
'Ъ','Ы','Ь','Э','Ю','Я','а','б','в','г',
'д','е','ё','ж','з','и','й','к','л','м',
'н','о','п','р','с','т','у','ф','х','ц',
'ч','ш','щ','ъ','ы','ь','э','ю','я');
$utf = array('Рђ','Р‘','Р’','Р“','Р”','Р•',
'РЃ','Р–','Р—','Р&#152;','Р™','Рљ','Р›',
'Рњ','Рќ','Рћ','Рџ','Р ','РЎ','Рў','РЈ',
'Р¤','РҐ','Р¦','Р§','РЁ','Р©','РЄ','Р«',
'Р¬','Р­','Р®','РЇ','Р°','Р±','РІ','Рі',
'Рґ','Рµ','С‘','Р¶','Р·','Рё','Р№','Рє',
'Р»','Рј','РЅ','Рѕ','Рї','СЂ','СЃ','С‚',
'Сѓ','С„','С…','С†','С‡','С€','С‰','СЉ',
'С‹','СЊ','СЌ','СЋ','СЏ');
return str_replace($utf,$win,$str);
}


Пользователь загружает на сервер текстовый файл, если он в UTF-8 требуется перекодировать его в windows-1251, если этот файл в windows-1251 соответственно ничего с ним не делать.
Вот, надеюсь понятно. Почему не работает?

Сам подход мне тоже не очень нравится, может кто подскажет что получше?

   

Сообщения:  [1-3] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования