На главную | Новости | Информация | Документация | Школа | ЧаВо | Файлы | Ссылки | Форум
Добротный платный
хостинг в традициях TAG.Hosting
Дополнительная информация: Документация |  Учебник PHP | Лицензия GNU

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в эту темуОткрыть новую тему
> Кодировка В Rss_reader
shlishevskii
сообщение 9.3.2008, 2:02
Сообщение #1


Новичок
*

Профиль
Группа: Пользователи
Сообщений: 36
Регистрация: 13.8.2007
Пользователь №: 24 603



Подскажите как поменять кодировку выводимых новостей в Rss_reader.
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
KrasivayaSvo
сообщение 9.3.2008, 2:42
Сообщение #2


Bot
****

Профиль
Группа: Администраторы
Сообщений: 5 509
Регистрация: 3.5.2006
Из: Московская область, Коломна
Пользователь №: 15 942



Цитата(shlishevskii @ 9.3.2008, 2:02) *

Подскажите как поменять кодировку выводимых новостей в Rss_reader.

Поиск по фразе iconv


--------------------
Исправляю ошибки на сайте по скриншоту
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
shlishevskii
сообщение 9.3.2008, 11:26
Сообщение #3


Новичок
*

Профиль
Группа: Пользователи
Сообщений: 36
Регистрация: 13.8.2007
Пользователь №: 24 603



вообще не получается подскажите в какой именно строке нужно поставить,я вставляю после вывода, нюка пишет что это ошибка, прочитал пол форума, все равно не получается вот код
Код
<?php
if (!eregi("modules.php", $_SERVER['PHP_SELF'])) {
    die ("You can't access this file directly...");
}
require_once("mainfile.php");
$module_name = basename(dirname(__FILE__));
set_time_limit(0);
// смените адрес RSS канала на свой!!!
$file = "http://static.feed.rbc.ru/rbc/logical/rbcdaily.ru/daily.rss";
$rss_channel = array();
$currently_writing = "";
$main = "";
$item_counter = 0;

function startElement($parser, $name, $attrs) {
       global $rss_channel, $currently_writing, $main;
       switch($name) {
           case "RSS":
           case "RDF:RDF":
           case "ITEMS":
               $currently_writing = "";
               break;
           case "CHANNEL":
               $main = "CHANNEL";
               break;
           case "IMAGE":
               $main = "IMAGE";
               $rss_channel["IMAGE"] = array();
               break;
           case "ITEM":
               $main = "ITEMS";
               break;
           default:
               $currently_writing = $name;
               break;
       }
}
function endElement($parser, $name) {
       global $rss_channel, $currently_writing, $item_counter;
       $currently_writing = "";
       if ($name == "ITEM") {
           $item_counter++;
       }
}
function characterData($parser, $data) {
    global $rss_channel, $currently_writing, $main, $item_counter;
    if ($currently_writing != "") {
        switch($main) {
            case "CHANNEL":
                if (isset($rss_channel[$currently_writing])) {
                    $rss_channel[$currently_writing] .= $data;
                } else {
                    $rss_channel[$currently_writing] = $data;
                }
                break;
            case "IMAGE":
                if (isset($rss_channel[$main][$currently_writing])) {
                    $rss_channel[$main][$currently_writing] .= $data;
                } else {
                    $rss_channel[$main][$currently_writing] = $data;
                }
                break;
            case "ITEMS":
                if (isset($rss_channel[$main][$item_counter][$currently_writing])) {
                    $rss_channel[$main][$item_counter][$currently_writing] .= $data;
                } else {
                    //print ("rss_channel[$main][$item_counter][$currently_writing] = $data<br>");
                    $rss_channel[$main][$item_counter][$currently_writing] = $data;
                }
                break;
        }
    }
}
$xml_parser = xml_parser_create();
xml_set_element_handler($xml_parser, "startElement", "endElement");
xml_set_character_data_handler($xml_parser, "characterData");
if (!($fp = fopen($file, "r"))) {
    die("could not open XML input");
}
while ($data = fread($fp, 4096)) {
    if (!xml_parse($xml_parser, $data, feof($fp))) {
        die(sprintf("XML error: %s at line %d",
                    xml_error_string(xml_get_error_code($xml_parser)),
                    xml_get_current_line_number($xml_parser)));
    }
}
xml_parser_free($xml_parser);
// Вывод в HTML
include("header.php");
OpenTable();
if (isset($rss_channel["IMAGE"])) {
$rss_channel = iconv("UTF-8", "windows-1251",  $rss_channel);
    print ("<a href=\"" . $rss_channel["LINK"] . "\" target=\"_blank\"><img border=\"0\" src=\"" . $rss_channel["IMAGE"]["URL"] . "\" align=\"middle\" alt=\"" . $rss_channel["IMAGE"]["TITLE"] . "\"></a>  <font size=\"5\">" . $rss_channel["TITLE"] . "</font><br><br>");
} else {

    print ("<font size=\"5\">" . $rss_channel["TITLE"] . "</font><br><br>");
}
print ("<i>" . $rss_channel["DESCRIPTION"] . "</i><br><br>");
if (isset($rss_channel["ITEMS"])) {
    if (count($rss_channel["ITEMS"]) > 0) {
        for($i = 0;$i < count($rss_channel["ITEMS"]);$i++) {
            print ("\n<table width=\"100%\" border=\"1\"><tr><td width=\"100%\"><a href=\"" . $rss_channel["ITEMS"][$i]["LINK"] . "\" target=\"_blank\">" . $rss_channel["ITEMS"][$i]["TITLE"] . "</a></b><br>");
            print ("<i>" . html_entity_decode($rss_channel["ITEMS"][$i]["DESCRIPTION"]) . "</i>");
            print ("</td></tr></table><br>");
        }
    } else {
        print ("<b>Нет новостей.</b>");
    }
}
CloseTable();
include("footer.php");
?>
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
shlishevskii
сообщение 9.3.2008, 20:47
Сообщение #4


Новичок
*

Профиль
Группа: Пользователи
Сообщений: 36
Регистрация: 13.8.2007
Пользователь №: 24 603



Народ ну подсажите куда не поставлю выдает ошибку. Может потому что нюка 8-я. Брал примеры из форумов ставил себе все равно выдает что в линии с этой командой iconv ошибка.
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Александр Мун
сообщение 15.11.2011, 13:47
Сообщение #5


Участник
**

Профиль
Группа: Пользователи
Сообщений: 55
Регистрация: 20.9.2010
Пользователь №: 31 864



Скачал модуль RSS_Reader и столкнулся с проблемой кодировки, перерыл форум ответа так и не нашел. Поэтому выкладываю допиленный код модуля под RusNuke 8.1.4... Сильно не пинайте, я новичок в PHP.
Собственно, изменил преобразование строк в требуемую кодировку через iconv из UTF-8 в cp1251

Код

<?php
if (!eregi("modules.php", $_SERVER['PHP_SELF'])) {
    die ("You can't access this file directly...");
}
require_once("mainfile.php");
$module_name = basename(dirname(__FILE__));
set_time_limit(0);
// смените адрес RSS канала на свой!!!
$file = "http://www.consultant.ru/rss/fd.xml";
$rss_channel = array();
$currently_writing = "";
$main = "";
$item_counter = 0;
function startElement($parser, $name, $attrs) {
       global $rss_channel, $currently_writing, $main;
       switch($name) {
           case "RSS":
           case "RDF:RDF":
           case "ITEMS":
               $currently_writing = "";
               break;
           case "CHANNEL":
               $main = "CHANNEL";
               break;
           case "IMAGE":
               $main = "IMAGE";
               $rss_channel["IMAGE"] = array();
               break;
           case "ITEM":
               $main = "ITEMS";
               break;
           default:
               $currently_writing = $name;
               break;
       }
}
function endElement($parser, $name) {
       global $rss_channel, $currently_writing, $item_counter;
       $currently_writing = "";
       if ($name == "ITEM") {
           $item_counter++;
       }
}
function characterData($parser, $data) {
    global $rss_channel, $currently_writing, $main, $item_counter;
    if ($currently_writing != "") {
        switch($main) {
            case "CHANNEL":
                if (isset($rss_channel[$currently_writing])) {
                    $rss_channel[$currently_writing] .= $data;
                } else {
                    $rss_channel[$currently_writing] = $data;
                }
                break;
            case "IMAGE":
                if (isset($rss_channel[$main][$currently_writing])) {
                    $rss_channel[$main][$currently_writing] .= $data;
                } else {
                    $rss_channel[$main][$currently_writing] = $data;
                }
                break;
            case "ITEMS":
                if (isset($rss_channel[$main][$item_counter][$currently_writing])) {
                    $rss_channel[$main][$item_counter][$currently_writing] .= $data;
                } else {
                    //print ("rss_channel[$main][$item_counter][$currently_writing] = $data<br>");
                    $rss_channel[$main][$item_counter][$currently_writing] = $data;
                }
                break;
        }
    }
}
$xml_parser = xml_parser_create();
xml_set_element_handler($xml_parser, "startElement", "endElement");
xml_set_character_data_handler($xml_parser, "characterData");
if (!($fp = fopen($file, "r"))) {
    die("could not open XML input");
}
while ($data = fread($fp, 4096)) {
    if (!xml_parse($xml_parser, $data, feof($fp))) {
        die(sprintf("XML error: %s at line %d",
                    xml_error_string(xml_get_error_code($xml_parser)),
                    xml_get_current_line_number($xml_parser)));
    }
}
xml_parser_free($xml_parser);
// Вывод в HTML
include("header.php");
OpenTable();
if (isset($rss_channel["IMAGE"])) {
    print ("<a href=\"" . $rss_channel["LINK"] . "\" target=\"_blank\"><img border=\"0\" src=\"" . $rss_channel["IMAGE"]["URL"] . "\" align=\"middle\" alt=\"" . iconv("UTF-8", "cp1251", $rss_channel["IMAGE"]["TITLE"]) . "\"></a>&nbsp;&nbsp;<font size=\"5\">" . iconv("UTF-8", "cp1251", $rss_channel["TITLE"]) . "</font><br><br>");
} else {
    print ("<font size=\"5\">" . iconv("UTF-8", "cp1251", $rss_channel["TITLE"]) . "</font><br><br>");
}
print ("<i>" . iconv("UTF-8", "cp1251", $rss_channel["DESCRIPTION"]) . "</i><br><br>");
if (isset($rss_channel["ITEMS"])) {
    if (count($rss_channel["ITEMS"]) > 0) {
        for($i = 0;$i < count($rss_channel["ITEMS"]);$i++) {
            print ("\n<table width=\"100%\" border=\"1\"><tr><td width=\"100%\"><a href=\"" . iconv("UTF-8", "cp1251", $rss_channel["ITEMS"][$i]["LINK"]) . "\" target=\"_blank\">" . iconv("UTF-8", "cp1251", $rss_channel["ITEMS"][$i]["TITLE"]) . "</a></b><br>");
            print ("<i>" . iconv("UTF-8", "cp1251", $rss_channel["ITEMS"][$i]["DESCRIPTION"]) . "</i>");
            print ("</td></tr></table><br>");
        }
    } else {
        print ("<b>Нет новостей.</b>");
    }
}
CloseTable();
include("footer.php");
?>
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему

 



Текстовая версия Сейчас: 27.8.2014, 19:39
Каталог сотовых телефонов - грабер

На главную | Новости | Информация | Документация | Школа | ЧаВо | Файлы | Ссылки

Rambler's Top100 Рейтинг@Mail.ru liveinternet.ru: показано число просмотров и посетителей за 24 часа Яндекс цитирования