Forum. MyNuke.ru
Forum. MyNuke.ruСообщения за сегодняПерсональные сообщения

Навигация  
Вернуться   Forum. MyNuke.ru > PHP-NUKE > Настройка и Изменение
Ник
Пароль
Ответ
 
Опции темы Поиск в этой теме Опции просмотра
ValeryL вне форума      Старый кодировка новостной ленты? #1  
ValeryL
Новенький
Регистрация: 11.01.2006
Сообщения: 10


Пожаловаться на это сообщениеОтветить с цитированием

Посмотреть профиль Отправить персональное сообщение для ValeryL Найти все сообщения от ValeryL Добавить ValeryL в список друзей  
31.01.2006, 13:32

Модернизировал модуль Новости Украины для чтения новостей с moigorod.ru (Хабаровск), однако не читабельный текст. В одном случае одни вопросительные знаки, во втором - вражеские кабалистические знаки. В приведенном тексте помечено. Не могу понять, что я не так сделал?

PHP код:
<?php 
/**************************************************  ***********************/
/* На основе News_Ukr v0.11 for PHP-Nuke 6.5-7.5 */
/* ==================================================  ====================*/
/* Оригинальный универсальный модуль импорта ленты новостей (страниц RSS)*/
/* RSS Reader Copyright (c) by Miha_hard http://rus-phpnuke.com */
/* ==================================================  ====================*/
/* Модификация 23.01.2006 Daemon (maddog@email.kht.ru) */
/* для сайта: */
/* http://cook.h16.ru */
/* ==================================================  ====================*/
/* Модуль импортирует новости Хабаровска */
/* http://www.moigorod.ru */
/* Все информация разбита на 16 отдельных разделов, навигация */
/* расположена с правой стороны от ленты новостей. */
/**************************************************  ***********************/
 
if( !stristr$_SERVER['SCRIPT_NAME'], "modules.php" ) ) {
die( 
"You can't access this file directly..." );
}
require_once(
"mainfile.php");
$module_name basename(dirname(__FILE__));
set_time_limit(0);
// $xml_parser = xml_parser_create('UTF-8');
$rss_channel = array();
$currently_writing "";
$main "";
$item_counter 0;
$img "<img border=\"0\" src=\"modules/$module_name/images/arrow.gif\" width=\"12\" height=\"12\">";//мини-лого возле титлов новостей (стрелка)
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;
}
}
}
 
 
switch ( 
$op )
{
case 
"main":
$url="http://www.moigorod.ru/uploads/rss/_headlines/news-main.xml";
$title_podr "Основные новости";
break;
 
case 
"sport":
$url="http://www.moigorod.ru/uploads/rss/_headlines/news-sport.xml";
$title_podr "Новости спорта";
break;
 
case 
"delo":
$url="http://www.moigorod.ru/uploads/rss/_headlines/news-biz.xml";
$title_podr "Деловые новости";
break;
 
case 
"boardm":
$url="http://www.moigorod.ru/uploads/rss/_headlines/board-main.xml";
$title_podr "Объявления";
break;
 
case 
"wanted":
$url="http://www.moigorod.ru/uploads/rss/_headlines/board-vac.xml";
$title_podr "Вакансии";
break;
 
case 
"resume":
$url="http://www.moigorod.ru/uploads/rss/_headlines/board-res.xml";
$title_podr "Резюме";
break;
 
case 
"boys":
$url="http://www.moigorod.ru/uploads/rss/_headlines/board-lovm.xml";
$title_podr "Знакомства / Парни";
break;
 
case 
"girls":
$url="http://www.moigorod.ru/uploads/rss/_headlines/board-lovf.xml";
$title_podr "Знакомства / Девушки";
break;
 
case 
"city":
$url="http://www.moigorod.ru/uploads/rss/_headlines/events-all.xml";
$title_podr "Городские события";
break;
 
case 
"catalog":
$url="http://www.moigorod.ru/uploads/rss/_headlines/catalog-all.xml";
$title_podr "Каталог фирм";
break;
 
case 
"konkurs":
$url="http://www.moigorod.ru/uploads/rss/_headlines/prizeclub-newcompet.xml";
$title_podr "Конкурсы";
break;
 
case 
"confer":
$url="http://www.moigorod.ru/uploads/rss/_headlines/f2f-newconf.xml";
$title_podr "Конференции";
break;
 
 
default:
$url="http://www.moigorod.ru/uploads/rss/_headlines/news-main.xml";
$title_podr "Основные новости Хабаровска";
}
 
 
// C этой строкой знаки вопроса
// $xml_parser = xml_parser_create();
 
// С этой строкой вражеские кабалистические знаки
$xml_parser xml_parser_create('UTF-8');
 
xml_set_element_handler($xml_parser"startElement""endElement");
xml_set_character_data_handler($xml_parser"characterData");
if (!(
$fp fopen($url"r"))) {
die(
"could not open XML input");
}
while (
$data fread($fp4096)) {
if (!
xml_parse($xml_parser$datafeof($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);
 
//$pagetitle = "$title_podr"; // титлы, если не стоит автоматическая генерация
$page_title "$title_podr";
$hometext "новости, события, лента новостей, Хабаровск, Хабаровский край, СНГ, $title_podr";
 
// Вывод в HTML
include("header.php");
 
OpenTable();
echo 
"<p align=\"center\"><font size=\"3\"><b>Последние новости Хабаровска от moigorod.ru</b></font><br></p>";
 
print (
"<center><i>" $rss_channel["DESCRIPTION"] . "</i></center><br><br>");
 
echo
"<hr size=\"1\" noshade color=\"#C5CDD6\">";//горизонтальная линия
 
echo"<table width=\"100%\" border=\"0\">";
 
echo
"<tr><td width=\"75%\" align=\"left\" valign=\"top\">";//левая таблица
 
echo"<center><b>$title_podr</b></center><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=\"0\"><tr><td>$img<b><a href=\"" $rss_channel["ITEMS"][$i]["LINK"] . "\" target=\"_blank\">" $rss_channel["ITEMS"][$i]["TITLE"] . "</a></b><br>");
print (
html_entity_decode($rss_channel["ITEMS"][$i]["DESCRIPTION"]));
print (
"</td></tr></table><br>");
}
} else {
print (
"<b>Нет новостей.</b>");
}
}
 
echo
"</td>";//конец левая таблица
 
echo"<td width=\"25%\" align=\"left\" valign=\"top\">";//правая таблица
 
if (isset($rss_channel["IMAGE"])) {
print (
"<a href=\"" $rss_channel["LINK"] . "\" target=\"_blank\"><img border=\"0\" src=\"" $rss_channel["IMAGE"]["URL"] . "\" align=\"middle\" alt=\"" $rss_channel["IMAGE"]["TITLE"] . "\"></a>&nbsp;&nbsp;<font size=\"3\"><br>" $rss_channel["TITLE"] . "</font><br><br>");
} else {
print (
"<font size=\"3\">" $rss_channel["TITLE"] . "</font><br><br>");
}
 
$url_mod "<a href=\"modules.php?name=News_Khabara&file=index&op";
 
echo
"<b>
$url_mod=main\">Основные новости</a><br>
$url_mod=sport\">Новости спорта</a><br>
$url_mod=delo\">Деловые новости</a><br>
$url_mod=boardm\">Объявления</a><br>
$url_mod=wanted\">Работа - Вакансии</a><br>
$url_mod=resume\">Работа - Резюме</a><br>
$url_mod=boys\">Знакомства - Парни</a><br>
$url_mod=girls\">Знакомства - Девушки</a><br>
$url_mod=city\">Городские события</a><br>
$url_mod=catalog\">Каталог фирм и заведений</a><br>
$url_mod=konkurs\">Новые конкурсы</a><br>
$url_mod=konfer\">Конференции</a><br>
</b><br><br>"
;
 
echo
"</td></tr></table>";//конец правая таблица
echo"</td></tr></table>";//конец блока новостей
 
CloseTable();
include(
"footer.php");
?>

Последний раз редактировалось Soniks, 01.02.2006 в 03:07.

Soniks вне форума      Старый #2  
Soniks
Администратор
Регистрация: 16.01.2005
Сообщения: 4,814


Пожаловаться на это сообщениеОтветить с цитированием

Посмотреть профиль Отправить персональное сообщение для Soniks Посетить домашнюю страницу Soniks Найти все сообщения от Soniks Добавить Soniks в список друзей  
01.02.2006, 03:04

ValeryL вы сначало посмотрите в какой кодировке идет сама rss? прото откройте ее в браузере.
 
"Если бы вам удалось надавать под зад человеку, виноватому в большинстве ваших неприятностей - вы бы неделю не смогли сидеть".


ValeryL вне форума      Старый #3  
ValeryL
Новенький
Регистрация: 11.01.2006
Сообщения: 10


Пожаловаться на это сообщениеОтветить с цитированием

Посмотреть профиль Отправить персональное сообщение для ValeryL Найти все сообщения от ValeryL Добавить ValeryL в список друзей  
01.02.2006, 06:16

На сайте moigorod.ru дается утилита для чтения новостей. Если открывать в броузере то:

Не удается отобразить страницу XML
Не удается просмотреть ввод XML с использованием списка стилей XSL. Исправьте ошибку и затем нажмите кнопку "Обновить"или повторите попытку позднее.


--------------------------------------------------------------------------------

В текстовом комментарии обнаружен недопустимый знак.

Посему, ничего не могу сказать точнее. Но похоже, что сайт на движке textpattern? а на сколько я понимаю он использует юникод.

При обновлении выдает:

В текстовом комментарии обнаружен недопустимый знак. Ошибка при обработке ресурса ''http://www.moigorod.ru/uploads/rss/rss....

document.write(' <a href="http://www.liveinternet.ru/click;MoiGorod-ru" target="_blank"><img src="http://counter.ya...

Soniks вне форума      Старый #4  
Soniks
Администратор
Регистрация: 16.01.2005
Сообщения: 4,814


Пожаловаться на это сообщениеОтветить с цитированием

Посмотреть профиль Отправить персональное сообщение для Soniks Посетить домашнюю страницу Soniks Найти все сообщения от Soniks Добавить Soniks в список друзей  
01.02.2006, 18:40

Вот метод решения вашей проблемы:
после:
PHP код:
 if ($currently_writing != "") { 

добавьте:
PHP код:
 $data iconv("UTF-8","Windows-1251",$data); 

соответственно в php библиотека iconv должнабыть установлена (что и есть на большинствах серверах, но на Денвере нету!)
 
"Если бы вам удалось надавать под зад человеку, виноватому в большинстве ваших неприятностей - вы бы неделю не смогли сидеть".


Ответ


Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Кодировка UTF-8 или Windows-1251 ???? android Установка 7 20.04.2006 05:26
Кодировка в Topics SHKIPER Настройка и Изменение 4 03.10.2005 22:50


Часовой пояс GMT +4, время: 21:59.


На Верх
Рейтинг@Mail.ru