Показать сообщение отдельно

  #9  
Старый 02.11.2007, 00:56
halkfild
Постоянный
Регистрация: 11.11.2005
Сообщений: 391
Провел на форуме:
7084941

Репутация: 2277
По умолчанию

коряво но нормально парсит.. /*з.ы. исправлял старый скрипт.. мо сейчас отлажу и уберу лишнее*/

PHP код:
<?php 
error_reporting
(0);
$xmls="http://www.securitylab.ru/_Services/Export/RSS/news.php";

$news = array(); 
$currentNews null;
$index null;
function 
saxStartElement($parser,$name,$attrs)
{
 global 
$currentNews,$index,$l,$type;

 switch(
$name)
 {
 case 
'channel':
  
$news = array();
  break;
 case 
'item':
  
$currentNews = array();
  break;
  default:
  
$index $name;
 break;
  };
  
}
function 
saxEndElement($parser,$name)
{
 global 
$news,$currentNews,$index$l,$type,$ii,$index;
 
$l[$name]=$currentNews[$name];
 if ((
is_array($currentNews) && ($name=='item')))
 {
  
$news[] = $currentNews;
  
$currentNews null;
 };
 
$index null;
 
$ii++;
}

function 
saxCharacterData($parser,$data)
{
 global 
$currentNews,$index,$l;

 if ((
is_array($currentNews)) && ($index))
 
$currentNews[$index] = $data;

}

$parser xml_parser_create();
xml_set_element_handler($parser,'saxStartElement','saxEndElement');
xml_set_character_data_handler($parser,'saxCharacterData');
xml_parser_set_option($parser,XML_OPTION_CASE_FOLDING,false);
$xml join('',file($xmls));
if (!
xml_parse($parser,$xml,true)) die(sprintf('<div align=center><font size=2 face=verdana color=red>не прошел коннект</font></div>',
 
xml_error_string(xml_get_error_code($parser)),
 
xml_get_current_line_number($parser)));
xml_parser_free($parser);

foreach(
$news as $n)
{
echo 
$n['title']." - ".$n['link']." - ".$n['description']." - ".$n['pubDate']."<br><br>";
}

?>
насчет преобразования с utf8-->cp1251 использовал раньше

PHP код:
function utf8tocyr($string) { 
$result=""
for (
$c 0$c strLen($string); $c=$c+2) { 
$ub ord(subStr($string$c1)); 
$lb ord(subStr($string$c+11)); 

if (
$ub == 208) { 
if (
$lb != 81) { 
$result $result.chr($lb 48); 

else { 
$result $result.'Ё'



if (
$ub == 209) { 
if (
$lb != 91) { 
$result $result.chr($lb 112); 

else { 
$result $result.'ё'



if ((
$ub != 208) AND ($ub != 209) AND ($lb != 91) AND ($lb != 81)) { 
$result $result.chr($ub); 
$c $c-1; } 

return 
$result


Последний раз редактировалось halkfild; 02.11.2007 в 01:01..
 
Ответить с цитированием