Скрипты
PHP
» Вычисление диапазонов из произвольного списка дат
» Пробежаться по всем дням и часам недели
» Печатаем строчки :)
» Карточная страница
» Простейший RDF XML парсер
» PHP Uploader
HTML
» Контролируем favicon.ico
Простейший RDF XML парсер
Пример RDF документа: http://nds1.nds.nokia.com/uaprof/N6290r100.xml.
<?php
// класс парсера (rdf simple parser) class rdf_sparser { var $x, $result;
function rdf_sparser($s) // $s - XML { $x = &$this->x; $x = array ( 1 => 2, 2 => array(), ); $p = xml_parser_create('UTF-8'); xml_set_object($p, $this); xml_parser_set_option($p, XML_OPTION_CASE_FOLDING, 0); xml_set_element_handler($p, '_xml_start', '_xml_end'); xml_set_character_data_handler($p, '_xml_data'); xml_parse($p, $s) or die (sprintf('XML error: %s at line %d', xml_error_string(xml_get_error_code($p)), xml_get_current_line_number($p))); xml_parser_free($p); $this->result = $x[2]; }
function _xml_start($p, $n, $a) { $x = &$this->x; if ('rdf:description' == ($l = strtolower($n))) { $x[1] = 0; } elseif (1 == ++$x[1] && false !== ($p = strpos($l, ':')) && 'rdf' !== substr($l, 0, $p++)) { $x[3] = &$x[2][substr($n, $p)]; $x[3] = ''; } elseif ('rdf:li' == $l && !empty($x[3])) { $x[3].= ' | '; } }
function _xml_end($p, $n) { $x = &$this->x; --$x[1]; }
function _xml_data($p, $s) { $x = &$this->x; if (0 == strlen($s = rtrim($s)) || '<![CDATA[' == $s || ']]>' == $s || 0 == $x[1]) { return; } $x[3].= $s; } }
// считываем RDF файл (WAP Profile) // file_get_contents PHP 4 >= 4.3.0 $s = file_get_contents('http://nds1.nds.nokia.com/uaprof/N6290r100.xml');
// парсим RDF XML документ $rdf = new rdf_sparser($s);
// печатаем результат echo '<pre>'; print_r($rdf->result); echo '</pre>';
?>
|