Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Преобразование названия файла в юникод 
V
    Опции темы
supercelt
Дата 19.8.2009, 18:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 658
Регистрация: 25.8.2005

Репутация: нет
Всего: 1



Код

$size_src = getimagesize($src);


Если название у файла русское, то вылезает ошибка 
Warning: getimagesize(http://testcms.com/cms_s01_upload_files/images/картинка.jpg) [function.getimagesize]: failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in Z:\home\testcms.com\www\cms_s01_libs\tiny_mce\plugins\filemanager\php\functions.php on line 91


Потом я название файла обрабатывал вот этой функцией:

Код

function str_rus( $str )
// преобразование русских букв в строке для вывода на картинку
{
$nstr=""; // итоговая строка
for( $i=0; $i<strlen( $str ) ;    $i++)
{
    $symbol=substr($str, $i, 1); // get symbol
    $ascii=ord( $symbol );    // get ascii code of this symbol
    if( $ascii < 128 )
    {    $nstr .= $symbol;        }
    elseif( $ascii > 191 and $ascii < 256 )
    {    $nstr .= "&#". (string)(848 + ord($symbol)).';';    }
    else
    {    $nstr .= $symbol;    }
} // end of for( $i ) loop

return( $nstr );
} // end of function str_rus


С ней тоже самое, почти такая же ошибка
Warning: getimagesize(http://testcms.com/cms_s01_upload_files/images/Фото-0006.jpg) [function.getimagesize]: failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in Z:\home\testcms.com\www\cms_s01_libs\tiny_mce\plugins\filemanager\php\functions.php on line 91


Вариант переименовывать файл на ходу при закачке на  сайт, в числа например не подходит. Так как файлы могут быть закачены через фтп как они есть.
PM   Вверх
Avrely
  Дата 19.8.2009, 19:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 239
Регистрация: 15.3.2007

Репутация: нет
Всего: 2



Код


$file = "картинка.jpg"; //название файла

$file_oldName = $file; //резервируем в другой переменной название файла, чтобы применить в rename()
//простой транслит
$file=strtr($file,"абвгдеёзийклмнопрстуфхъыэ",

    "abvgdeeziyklmnoprstufhiei");
    $file=strtr($file,"АБВГДЕЁЗИЙКЛМНОПРСТУФХЪЫЭ",

    "abvgdeeziyklmnoprstufhiei");

   

 // Затем - "многосимвольные" и некторые символы.

    $file=strtr($file, 

                    array(

                        "ж"=>"zh", "ц"=>"ts", "ч"=>"ch", "ш"=>"sh", 

                        "щ"=>"shch","ь"=>"", "ю"=>"yu", "я"=>"ya",

                        "Ж"=>"ZH", "Ц"=>"TS", "Ч"=>"CH", "Ш"=>"SH", 

                        "Щ"=>"SHCH","Ь"=>"", "Ю"=>"YU", "Я"=>"YA",

                        "ї"=>"i", "Ї"=>"Yi", "є"=>"ie", "Є"=>"Ye", " " => "_",
                        "'" => "",  "$" => "", "*" => "", "&" => "_and_", "`" => ""
                      , "\"" => "", "&" => "and", "!" => "", "@" => "", 
                       "#" => "", "$" => "", "%" => "", "^" => "", "*" => "", 
                      "(" => "", ")" => "", "~" => "", "{" => "", "}" => "", "[" => "",
                       "]" => "", ";" => "", ":" => "", "?" => "", "<" => "", 
                      ">" => "", "№" => "_number_", "’" => "", "," => "",
                        "+" => "_plus_"
                        )
                 );

        rename($file_oldName, $file);
       echo $file;




Добавлено @ 19:25
Если неработает rename(), то следует использовать system() иногда помогает

 smile


Это сообщение отредактировал(а) Avrely - 19.8.2009, 19:26
PM MAIL ICQ MSN   Вверх
supercelt
Дата 20.8.2009, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 658
Регистрация: 25.8.2005

Репутация: нет
Всего: 1



Avrely, получается будут заменяться русские буквы на транслит?. 
Но ведь как-то делают же, что название файла остаётся русскими буквами и всё работает...
PM   Вверх
nerezus
Дата 20.8.2009, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 12
Всего: 43



supercelt, запусти на серверной ОС свой скрипт и удивишься - он будет работать.

Это все из-за бага в винде(ага, фича прям), согласно которому кодировки в GUI и кодировка ФС разные(cp1251 и cp866).


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
supercelt
Дата 26.8.2009, 23:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 658
Регистрация: 25.8.2005

Репутация: нет
Всего: 1



понял, спасибо
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0496 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.