$pogoda = file_get_contents('http://export.yandex.ru/weather/?city=хххх');preg_match('/<temperature>(.*?)<\/temperature>/i',$pogoda,$temp);$temp[1]=iconv('UTF-8','CP1251',$temp[1]); $vivod = "<div style=\"float:left;margin-top:18px;font-size:18px;\">$temp[1] °
Или перед preg_match делаем
$pogoda=iconv('UTF-8','CP1251',$pogoda);
Ещё, кстати, очень рекомендую почитать какую-нибудь книжку про PHP. Вреда точно не будет :)
Вы имеете в виду ситуацию, когда в конвертируемой строке часть данных в одной кодировке, а часть в другой?
Если да, то это не упущение iconv, а упущение программиста, допустившего смешение кодировок в одной строке.
А iconv лишь выполняет механическую работу и делает это замечательно :)
Напишите в разделе "Администрирование серверов". Кто-нибудь поможет.
mb_convert_encoding ($temp,"UTF-8" ,"Windows-1251")
Чем лучше?
Так у вас $temp образуется только после preg_match().
Т.е. строка ДО и ПОСЛЕ iconv остаётся без изменений? :)
И в чём это проявляется?
Потому что я лишь привожу пример использования функции iconv()
Значит, в обратную сторону :)
$data=iconv('UTF-8','CP1251',$data);
Я подозреваю, что всё-таки не ANSI, а ASCII :)
$data=iconv('ASCII','UTF-8',$data);
И скорее всего, Яндекс отдаёт в CP1251. Проверьте, что там написано в http-заголовках в ответе Яндекса. Вот какая кодировка там написана, из той и перекодируйте в UTF-8.