Не сте регистриран! Регистрирайте се БЕЗПЛАТНО, за да използвате услугите на сайта!

   Рубрики
 
 
 
 

 Форуми
» SEO и оптимизация
» Всичко за PHP и Perl
» Всичко за C, C++ и .NET
» Всичко за Java и JSP
» Всичко за SQL и MySQL
» Всичко за XHTML и CSS
» Презентация на сайтове
 Генериране на XML файлове с PHP
  1. Генериране на XML файлове с PHP
     
Автор  plamenSm (06.04.2008 12:58)  съобщение до автора
Погледнат  1768 пъти  добави към любими
Оценка  добави коментар
Гласове  --  изпрати на приятел
Коментари  (0)  абонирай се за PHP
    Страница 1 / 1

 



В този урок ще получите основните знания за това как може да се генерира XML на всеки web сървър, който поддържа PHP, без използване на каквито и да е разширения за работа с XML. В някои случаи генерирането на XML файлове само с PHP може да се окаже по-бързо и лесно отколкото това с използване на XML библиотеки.

В този пример ще генерираме XML файл в следния формат:

CODE
1
2
3
4
5
6
7
8
9
<?xml version="1.0" encoding="utf-8"?>
    <
trackList>
        <
track>
            <
title>External Audio</title>
            <
creator>Name</creator>
            <
location>http://www.eladsites.com/music/King Africa%20-%20La Bomba.mp3</location>
            <
image>http://www.domain.com/ player/images/music.png</image>
        </
track>
    </
trackList>


Escape символи!

XML файловете нормално започват с следващата линия:

CODE
1
<?xml version="1.0" encoding="схема-на-кодиране"?>

Забелязахте ли? – таговете "<?" и "?>" съвпадат с тези в PHP. Непременно трябва да поставим escape символа "\" (backslash) пред всички съвпадащи със синтаксиса на PHP символи за да избегнем объркването, което би се получило когато PHP процесора срещне например "<?" в константно зададения стринг.


Имена на файловете. Ако имате намерение да генерирате голямо количество файлове, можете да използвате генерирани на случаен принцип имена Грнериране на името и създаване на файла:

CODE
1
2
3
4
5
6
<?php
$random = rand(1, 99999999);
$xmlFName = MD5($random) . ".xml" ;

$file = fopen("{$xmlFName}", "w");
?>

Използвахме вградените функции rand() и MD5() за да получим случайно име на файла. В примера не е включена проверка дали генерираното име вече не съществува, но е добре да се включи, въпреки малката вероятност от повторение.


Сега може да преминем към същността.

Предефинирани символи. За да направим нашия файл форматиран и удобен за четене от човек, трябва да го форматираме. Ще са ни необходими следните предефифинирани символи:

  • \r – “Carriage Return” – връщане в началото на реда
  • \n – “Newline Character” – преминаване на нов ред
  • \t – “Tab Character” – табулатор

Ето и първия ред с необходимите escape символи:

CODE
1
2
3
<?php
$xmlfile = "\<\?xml version=\"1.0\" encoding=\"utf-8\"\?\>\r\n";
?>


Ето как ще изглежда този ред във файла:

CODE
1
<?xml version="1.0" encoding="utf-8"?>


Сега да добавим и самото тяло на XML файла:

CODE
1
2
3
4
5
6
7
8
9
10
<?php
$xmlfile .= "\t<trackList>\r\n";
$xmlfile .= "\t\t<track>\r\n";
$xmlfile .= "\t\t\t<title>External Video</title>\r\n";
$xmlfile .= "\t\t\t<creator>Name</creator>\r\n";
$xmlfile .= "\t\t\t<location>{$_REQUEST['url']}</location>\r\n";
$xmlfile .= "\t\t\t<image>http://domain.com/player/images/music.png</image>;\r\n";
$xmlfile .= "\t\t</track>\r\n";
$xmlfile .= "\t</trackList>\r\n";
?>

Всъщност това е форматът на XML файла, който се използва от Flash Media online Player.

Както виждате използвахме "\t" за табулация и "\r\n" за преминаване на нов ред.

Тези символи се интерпретират автоматично от PHP и във стринга $xmlfile ще бъдат заменени с техните ASCII кодове. Не така стои въпроса обаче със "\<", "\?" и "\>". Преди записа трябва да премахнем "\" от стринга за тези символи:

CODE
1
2
3
4
5
<?php
$xmlfile = str_replace('\<', '<', $xmlfile);
$xmlfile = str_replace('\?', '?', $xmlfile);
$xmlfile = str_replace('\>', '>', $xmlfile);
?>

Записваме и затваряме файла:

CODE
1
2
3
4
<?php
fwrite($file, $xmlfile);
fclose($file);
?>

Приключихме!


Ето и пълен вариянт скрипта:

CODE
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
$random = rand(1, 99999999);
$xmlFName = MD5($random) . ".xml" ;

$file = fopen("{$xmlFName}", "w");

$xmlfile = "\<\?xml version=\"1.0\" encoding=\"utf-8\"\?\>\r\n";

$xmlfile .= "\t<trackList>\r\n";
$xmlfile .= "\t\t<track>\r\n";
$xmlfile .= "\t\t\t<title>External Video</title>\r\n";
$xmlfile .= "\t\t\t<creator>Creator Name</creator>\r\n";
$xmlfile .= "\t\t\t<location>{$_REQUEST['url']}</location>\r\n";
$xmlfile .= "\t\t\t<image>http://yourDomain.com/player/images/music.png</image>;\r\n";
$xmlfile .= "\t\t</track>\r\n";
$xmlfile .= "\t</trackList>\r\n";

$xmlfile = str_replace('\<', '<', $xmlfile);
$xmlfile = str_replace('\?', '?', $xmlfile);
$xmlfile = str_replace('\>', '>', $xmlfile);

$xmlfile = str_replace('\<', '<', $xmlfile);
$xmlfile = str_replace('\?', '?', $xmlfile);
$xmlfile = str_replace('\>', '>', $xmlfile);

fwrite($file, $xmlfile);
fclose($file);
?>


За да заработи реално скрипта, заменете жълтите подчертани части от кода с правилните за вас и вашия сървър и се обърнете към скрипта с браузър, като подадете параметър "?url=адрес_на_видеото".

Ако използвате Windows сървър не забравяйте, че той прави разлика между бинарни и текстови файлове. Добавете "w" в параметъра за режима на отваряне на файла. Тъй като нашия файл е форматиран предварително в паметта, той трябва да се третира просто като поредица от байтове:

CODE
1
2
3
<?php
$file = fopen("{$xmlFName} ", "wb");
?>

Това е всичко. Да обобщим:

Създадохме форматиран XML файл и го записахме на сървъра, без да използваме специални библиотеки за за работа с XML.


Източник: pznetworks.com



   


Ключови думи: PHP xml flash файл генериране скрипт


Още уроци от тази рубрика


 
  • Подобни теми от myLinks
 

 1 посетител чете този урок (0 потребители и 1 гост)  
Активни потребители: ---
   
  

Еmail  
 

 

 
  • Интересно от Софтуер
 



IT-PLACE.NET © 2004 - 2008