php Карта сайта из xml в виде гиперссылок через Simplexml и SAX 

Дата публикации  Дата изменения08.12.13  Комментарии6   Просмотры6013

Курсы

Парсинг карты сайта xml и сохранение/вывод в виде списка гиперссылок html.

Пример реализации с использованием возможностей Simplexml – изящный и простой способ:

<?php
/***********************************************
/* Sitemap-to-html trough SimpleXML (php) script - © «OIS» aka Coder (http://coder.hol.es)
/* This notice MUST stay intact for legal use
/* Visit http://coder.hol.es/ for this script and others.
***********************************************/
//Создание объекта и загрузка в него документа
$sxml = simplexml_load_file("sitemap.xml");
$fp = fopen('sitemap.html', 'w');// очистка/создание файла для записи
	fwrite($fp, "<meta http-equiv='Content-Type' content='text/html; charset=UTF-8' />"."\n");
	fwrite($fp, "Карта сайта: ".$_SERVER["SERVER_NAME"]."\n<br />");
	fclose($fp);
foreach ($sxml->url as $link) {
	$result = ("<a href=\"{$link->loc}\">".$link->loc."</a>\n<br />");
	//echo $result; // прямой вывод
	$fp = fopen('sitemap.html', 'a+'); //записываем в файл
 fwrite($fp, $result);
 fclose($fp);
 }
echo file_get_contents("sitemap.html"); // вывод - если не нужен, закомментируйте
?>

  • Более "тяжелый" вариант через SAX:
<?php
/***********************************************
/* Sitemap-to-html trough SAX (php) script - © «OIS» aka Coder (http://coder.hol.es)
/* This notice MUST stay intact for legal use
/* Visit http://coder.hol.es/ for this script and others.
***********************************************/
// Создание парсера
$xml = xml_parser_create("UTF-8"); // Windows-1251 не поддерживается
// Назначение обработчиков начальных и конечных тегов
xml_set_element_handler($xml, "start_tag_handler", "end_tag_handler");
//  Назначение обработчика текстового содержимого
xml_set_character_data_handler($xml, "character_handler");

// Функция обработчик начальных тегов
function start_tag_handler($xml, $tag, $attributes) {
if ($tag=="LOC") {
   $fp = fopen('sitemap_s.html', 'a+');
   fwrite($fp, '<div>');
   fclose($fp);
}
if ($tag=="LASTMOD") {
   $fp = fopen('sitemap_s.html', 'a+');
   fwrite($fp, '<!--');
   fclose($fp);
   }
}
// Функция обработчик закрывающих тегов
function end_tag_handler($xml, $tag) {
if ($tag=="LOC" ) {
   $fp = fopen('sitemap_s.html', 'a+');
   fwrite($fp, '</div>');
   fclose($fp);
   }
if ($tag=="LASTMOD") {
   $fp = fopen('sitemap_s.html', 'a+');
   fwrite($fp, '-->');
   fclose($fp);
   } 
}
// Функция обработчик текстового содержимого
function character_handler($xml, $data) {
$fp = fopen('sitemap_s.html', 'a+');
   fwrite($fp, '<a href="'.$data.'">'.$data.'</a>');
   fclose($fp);
}

$fp = fopen('sitemap_s.html', 'w');
   fwrite($fp, '');
   fwrite($fp, 'Sitemap: '.$_SERVER["SERVER_NAME"]);
   fclose($fp);

// Начало парсинга
xml_parse($xml, file_get_contents("sitemap.xml"));
echo file_get_contents("sitemap_s.html");// вывод на экран - закомментируйте, если не нужно
?>

 Смотреть пример – вариант SXML

 Смотреть пример – вариант SAX

  Размер:  8,73kB | Изменен:  8.12.13 | Загрузок: 163

Бесплатные курсы

Категории

Теги: , , , , , , ,

Оцените материал:

Рейтинг: 7.5/10 (2)


КомментарииКомментарии:

    coder.hol.es /* Админ */

     

    Возможно, версия php (или его конфигурация) не поддерживает sxml. В примере на сайте работает – на стандартной конфигурации 5.3 и 5.4 должно работать.


 

Старые →← Новые