|
|
|
| Есть скрипт гороскопа, но результаты выводятся в кодировке windows-1251 и криво показываются на странице. Подскажите, пожалуйста, как сделать так, чтобы результаты запроса выводились не в windows-1251, а в utf-8?
Вот код скрипта:
<?
if(!defined('DATALIFEENGINE'))
{
die("Hacking attempt!");
}
$tpl->load_template('horoscope.tpl');
$title = "Овен";
$pic = "<img src=\"{THEME}/images/zodiac/aries.gif\" marginwidth=\"5\">";
//$sign="aries";
switch ($_GET['sign']) {
case "aries" :
$act=1;
$pic = "<img src=\"{THEME}/images/zodiac/aries.gif\" marginwidth=\"5\">"; $title = "Овен";
break;
case "taurus":
$act=2;
$pic = "<img src=\"{THEME}/images/zodiac/taurus.gif\" marginwidth=\"5\">"; $title = "Телец";
break;
case "gemini" :
$act = 3; $pic = "<img src=\"{THEME}/images/zodiac/gemini.gif\" marginwidth=\"5\">"; $title = "Близнецы";
break;
case "cancer" :
$act = 4; $pic = "<img src=\"{THEME}/images/zodiac/cancer.gif\" marginwidth=\"5\">"; $title = "Рак";
break;
case "leo" :
$act = 5; $pic = "<img src=\"{THEME}/images/zodiac/leo.gif\" marginwidth=\"5\">"; $title = "Лев";
break;
case "virgo" :
$act = 6; $pic = "<img src=\"{THEME}/images/zodiac/virgo.gif\" marginwidth=\"5\">"; $title = "Дева";
break;
case "libra" :
$act = 7; $pic = "<img src=\"{THEME}/images/zodiac/libra.gif\" marginwidth=\"5\">"; $title = "Весы";
break;
case "scorpio" :
$act = 8; $pic = "<img src=\"{THEME}/images/zodiac/scorpio.gif\" marginwidth=\"5\">"; $title = "Скорпион";
break;
case "sagittarius" :
$act = 9; $pic = "<img src=\"{THEME}/images/zodiac/sagittarius.gif\" marginwidth=\"5\">"; $title = "Стрелец";
break;
case "capricorn" :
$act = 10; $pic = "<img src=\"{THEME}/images/zodiac/capricorn.gif\" marginwidth=\"5\">"; $title = "Козерог";
break;
case "aquarius" :
$act = 11; $pic = "<img src=\"{THEME}/images/zodiac/aquarius.gif\" marginwidth=\"5\">"; $title = "Водолей";
break;
case "pisces" :
$act = 12; $pic = "<img src=\"{THEME}/images/zodiac/pisces.gif\" marginwidth=\"5\">"; $title = "Рыбы";
break;
}
$time = $_GET['time'];
if ($_GET['sign'] == "")
{
$sign = "aries";
}
else {
$sign = $_GET['sign'];
}
$open = file_get_contents("http://horo.mail.ru/prediction.html?sign=$act&time=$time", "r");
if ($time == 'month') {
preg_match_all('|<div id="tm_month">(.*)</div>|Uis', $open, $elements);
foreach($elements[1] as $id=>$horoscope)
{
$hor .= $horoscope;
}
}
else
{
preg_match_all('|<p>(.*)</p>|Uis', $open, $elements);
foreach($elements[1] as $id=>$horoscope)
{
$hor .= $horoscope;
}
}
if(isset($time) && $time != "")
{
if ($config['allow_alt_url'] == "yes")
{
$linkhor .= "<a href=\"/horoscope/$sign/\">Гороскоп на сегодня</a>";
}
else
{
$linkhor .= "<a href=\"/index.php?do=horoscope&sign=$sign\">Гороскоп на сегодня</a>";
}
}
else
{
if ($config['allow_alt_url'] == "yes")
{
$linkhor .= "<a href=\"/horoscope/$sign/yesterday.html\">< Вчерашний Гороскоп</a> | <a href=\"/horoscope/$sign/tomorrow.html\">Гороскоп на завтра </a> | <a href=\"/horoscope/$sign/week.html\">Гороскоп на неделю </a> | <a href=\"/horoscope/$sign/month.html\">Гороскоп на месяц </a> | <a href=\"/horoscope/$sign/year.html\">Гороскоп на год ></a>";
}
else
{
$linkhor .= "<a href=\"/index.php?do=horoscope&sign=$sign&time=yesterday\">< Вчерашний Гороскоп</a> | <a href=\"/index.php?do=horoscope&sign=$sign&time=tomorrow\">Гороскоп на завтра </a> | <a href=\"/index.php?do=horoscope&sign=$sign&time=week\">Гороскоп на неделю </a> | <a href=\"/index.php?do=horoscope&sign=$sign&time=month\">Гороскоп на месяц </a> | <a href=\"/index.php?do=horoscope&sign=$sign&time=year\">Гороскоп на год ></a> ";
}
}
if(!$hor)
{
$conhor .= "<br />Гороскопа пока-что нету";
}
if ($config['allow_alt_url'] == "yes")
{
$self_link = "<a href=\"/horoscope/\">Гороскоп</a>";
$blockhor .= 'Тут HTML';
}
else
{
$self_link = "<a href=\"/index.php?do=horoscope\">Гороскоп</a>";
$blockhor .= 'Тут HTML';
}
$tpl->set('{pic}',$pic);
$tpl->set('{zodiac}',$title);
$tpl->set('{blockhor}',$blockhor);
$tpl->set('{horoscope}',$hor);
$tpl->set('{links}',$linkhor);
$tpl->set('{self}',$self_link);
$tpl->compile('content');
$tpl->clear();
?>
|
| |
|
|
|
|
|
|
|
для: Keleon
(03.03.2009 в 14:24)
| | Воспользуйтесь функцией iconv. | |
|
|
|
|
|
|
|
для: sim5
(03.03.2009 в 14:49)
| | Не могли бы вы показать как это делается на данном конкретном примере? | |
|
|
|
|
|
|
|
для: Keleon
(03.03.2009 в 16:18)
| | Нет, я не буду переписывать ваш пример, да и незачем, из описания функции и так все понятно. Не понятно другое. Если ваш сайт, это все UTF-8, и только эта страница 1251, то не проще ли ее и подготовить в этой кодировке. | |
|
|
|
|
|
|
|
для: sim5
(03.03.2009 в 16:31)
| | Да, только эта страница в 1251. Как подготовить не знаю. Нет специального образования. Просто парсер видимо выдает данные в 1251, поэтому они так и отображаются на вебстранице. | |
|
|
|
|
|
|
|
для: Keleon
(03.03.2009 в 16:40)
| | Кто-нибудь может помочь хоть на платной основе?
Просто помощь некоторых людей - это не совсем помощь. Ведь если ты идешь к потрному зашить себе пальто, он же не посылает тебя в магазин иголок и ниток, чтобы ты это сделал сам. | |
|
|
|
|
|
|
|
для: Keleon
(03.03.2009 в 19:21)
| | Откройте файл в редакторе, хоть в блокноте, измените кодировку и перезапишите. Всего то и делов. | |
|
|
|
|
|
|
|
для: Николай2357
(03.03.2009 в 19:54)
| | Николай, так не получается. Весь HTML в файле открывается в кодировке UTF8, а та часть, которая парсится и идет с другого сайта - выводится только в 1251. | |
|
|
|
|
|
|
|
для: Keleon
(03.03.2009 в 21:02)
| |
$open = ivconv("Windows-1251", "UTF-8",
file_get_contents( "http://horo.mail.ru/prediction.html?sign=$act&time=$time" ) );
|
| |
|
|
|
|
|
|
|
для: Trianon
(03.03.2009 в 21:15)
| | Не получилось:
Fatal error: Call to undefined function ivconv() in /var/www/user/data/www/name.ru/engine/modules/horoscope.php on line 177 | |
|
|
|
|
|
|
|
для: Keleon
(03.03.2009 в 22:19)
| | это крайне странная ситуация.
Как правило, в php эта функция определена,
поскольку на хостингах, где обычно одна из *nix-платформ, её включают при компиляции php.
На windows-платформах в php5 она входит в ядро.
Сервер с utf-8 контентом без нее, по-моему, вообще нонсенс. | |
|
|
|
|
|
|
|
для: Trianon
(03.03.2009 в 22:30)
| | А может вот так:
$open = ivconv("Windows-1251", "UTF-8", "file_get_contents( "http://horo.mail.ru/prediction.html?sign=$act&time=$time" )");
|
?
В данном случает возникает другая ошибка:
Parse error: syntax error, unexpected T_STRING...
А сервер VDS. PHP5. Дело, наверное, не в сервере. | |
|
|
|
|
|
|
|
для: Keleon
(03.03.2009 в 22:48)
| |
что выдает?
Отклик лучше бы прикрепить в виде архива.
>А может вот так:
нет. не стоит. | |
|
|
|
|
|
|
|
для: Keleon
(03.03.2009 в 22:48)
| | Все на много прозаичнее. Нужно не ivconv а iconv | |
|
|
|
|
|
|
|
для: Николай2357
(03.03.2009 в 23:14)
| | Ох ты ж... и вправду опечатался...
..... | |
|
|
|
|
|
|
|
для: Trianon
(03.03.2009 в 23:16)
| | Большое-большое спасибо! Наконец-то все заработало. Всего вам самого наилучшего, добрые люди. | |
|
|
|