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

Форум PHP

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

 

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

вид форума:
Линейный форум Структурный форум

тема: Удаление файлов с русским названием
 
 автор: TOOX   (14.06.2011 в 16:52)   письмо автору
 
 

Здравствуйте!
Файлы загружаются на сервер и в названии всех файлов пробелы заменяются на знак "_".
При удалении файлов с англоязычным названием - все проходит успешно.
При удалении файлов с русским названием - не совсем.
Например:
Имя файла "Методические.doc" удаляется успешно.
а файл с именем "Методические_указания.doc" не удаляется.

В чем может быть проблема?

удаление
unlink("./files/$id/$filename");


ошибка
A PHP Error was encountered
Severity: Warning
Message: unlink(./files/0006/Методих|zє9W) [function.unlink]: Invalid argument
Filename: controllers/file.php
Line Number: 24

  Ответить  
 
 автор: cheops   (14.06.2011 в 18:26)   письмо автору
 
   для: TOOX   (14.06.2011 в 16:52)
 

Не следует использовать русские имена файлов, даже если операционная система использует для хранения названий файлов UTF-8, и вы в свою очередь в скрипте также не используете UTF-8, в ядре PHP UTF-8 не поддерживается. Лучше все русские названия транслировать в английские.

  Ответить  
 
 автор: TOOX   (14.06.2011 в 18:31)   письмо автору
 
   для: cheops   (14.06.2011 в 18:26)
 

Спасибо, за ответ. Скажите, а в php есть стандартная функция трансляции? или нужно самому создавать?)

  Ответить  
 
 автор: Добрый кот   (14.06.2011 в 19:28)   письмо автору
 
   для: TOOX   (14.06.2011 в 18:31)
 

воть из ДЛЕ
function totranslit($var, $lower = true, $punkt = true) {

    if ( is_array($var) ) return "";

    $NpjLettersFrom = "абвгдезиклмнопрстуфці";
    $NpjLettersTo = "abvgdeziklmnoprstufcyi";
    $NpjBiLetters = array ("ы" => "yj", "й" => "j",
 "ё" => "yo", "ж" => "zh", "х" => "x", "ч" => "ch", 
"ш" => "sh", "щ" => "shh", "э" => "ye", "ю" => "yu", 
"я" => "ya", "ъ" => "", "ь" => "", "ї" => "yi",
 "є" => "ye" );
    
    $NpjCaps = "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЪЫЭЮЯЇЄІ";
    $NpjSmall = "абвгдеёжзийклмнопрстуфхцчшщьъыэюяїєі";
    
    $var = str_replace( ".php", "", $var );
    $var = trim( strip_tags( $var ) );
    $var = preg_replace( "/\s+/ms", "-", $var );
    $var = strtr( $var, $NpjCaps, $NpjSmall );
    $var = strtr( $var, $NpjLettersFrom, $NpjLettersTo );
    $var = strtr( $var, $NpjBiLetters );
    
    if ( $punkt ) $var = preg_replace( "/[^a-z0-9\_\-.]+/mi", "", $var );
    else $var = preg_replace( "/[^a-z0-9\_\-]+/mi", "", $var );

    $var = preg_replace( '#[\-]+#i', '-', $var );

    if ( $lower ) $var = strtolower( $var );
    
    //if( strlen( $var ) > 200 ) {
        
    //    $var = substr( $var, 0, 200 );
        
    //    if( ($temp_max = strrpos( $var, '-' )) ) $var = substr( $var, 0, $temp_max );
    
    //}
    
    return $var;
}
можете от нее отталкиваться.

  Ответить  
 
 автор: TOOX   (14.06.2011 в 19:52)   письмо автору
 
   для: Добрый кот   (14.06.2011 в 19:28)
 

Еще раз спасибо!

  Ответить  
Rambler's Top100
вверх

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