За последние 24 часа нас посетили 18872 программиста и 1632 робота. Сейчас ищут 857 программистов ...

file_put_contents и русские символы в имени файла

Тема в разделе "PHP для новичков", создана пользователем borshov, 30 окт 2010.

  1. borshov

    borshov Активный пользователь

    С нами с:
    6 фев 2009
    Сообщения:
    35
    Симпатии:
    0
    Привет, помогите, пытаюсь дернуть картинку, но она имеет имя на русском языке

    делаю так
    $image= urlencode($image);
    $images = file_get_contents($image);
    file_put_contents('img/'.$picname.'.jpg',$images);

    не получается!

    спасибо.
     
  2. Ensiferum

    Ensiferum Активный пользователь

    С нами с:
    11 июл 2010
    Сообщения:
    1.292
    Симпатии:
    0
    Адрес:
    из секты поклонников Нео
    В $images что-нибудь есть?
     
  3. borshov

    borshov Активный пользователь

    С нами с:
    6 фев 2009
    Сообщения:
    35
    Симпатии:
    0
    конечно есть, картинки с латинискими названиями тянутся успешно
     
  4. Ensiferum

    Ensiferum Активный пользователь

    С нами с:
    11 июл 2010
    Сообщения:
    1.292
    Симпатии:
    0
    Адрес:
    из секты поклонников Нео
    Не, когда русское название - в $Images что-нибудь заносится?
     
  5. borshov

    borshov Активный пользователь

    С нами с:
    6 фев 2009
    Сообщения:
    35
    Симпатии:
    0
    тяну все с rss

    скрипт парсинга в utf-8
    лента тоже в utf-8

    например нужно стянуть картинку с названием "Осенний звездопад (2010).jpg"
    это если без $image= urlencode($image);
    в итоге пишет
    Warning: file_get_contents(http://xxx.com/9942/Осенний звездопад (2010).jpg)[function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.0 404 Not Found in Z:\home\xxx.com\www\albums\rss.php on line 23
     
  6. borshov

    borshov Активный пользователь

    С нами с:
    6 фев 2009
    Сообщения:
    35
    Симпатии:
    0
    решил проблему

    кому интересно:

    регуляркой получил русское название файла

    затем
    $image[1]= $img[1]."".(urlencode(iconv("CP1251", "UTF-8", $img[2]))); ///переводим в ютф если получаем в русской кодировке
    дальше мне пришлось заменить символы скобок на реальные скобки, а пробел в виде + заменить на %20
    $image[1] = str_replace('%28','(',$image[1]);
    $image[1] = str_replace('%29',')',$image[1]);
    $image[1] = str_replace('+','%20',$image[1]);

    и все норма!