Forum Webscript.Ru
Общие => Веб-технологии => Тема начата: Hong от 07 Октября 2003, 20:37:00
-
Привет.
Помогите написать регулярное выражение:
Есть вот такой xml код:
ansbach
nue
aschaffenburg
fra
wittenberg
txl
wolfsburg
haj
wuerzburg
nue
Блок c странами и их кодами повторяетcя много раз для различных cтран
страна
код
Как вырезать динамически страну и код?
-
Hong:
xml код
А что средствами языка XML пропарсить не судьба??? Мне кажется намного эффективнее будет... попробуй :)
а так чисто из любви к искусству и навскидку:
preg_match_all("/[\\n\\s]*(.*?)<\\/CITY_NAME>[\\n\\s]*(.*?)<\\/EXTERNAL_REF>/s",$line,$matches);
print_r($matches);
На самом деле это решение можно сделать и красивее и эффективнее... а смысл?
-
а как понять пропарсить?
Cмысл тут такой:
на одной странице сделали специално для нас такой вывод из базы данных, который я должен занести у нас на странице в формуляр, вывод каждый день изменяется поетому я думал етот текст вырезать.
Если ты знаеш как ето легче сделать на хмл, буду тебе презнателен за помощ. Я хмл не знаю.
спасибо.
Cu.
-
Нong
а тебе не кажется, что сначала надо разобраться с технологиями и терминами?
XML - язык обмена данными (сейчас много людей начнет писать, что это не так, но я даю общее его понимание, а не определение). Грубо говоря, если у тебя одна программа выдает из БД результат в виде XML, то другую можно "научить" читать эти данные и делать какие-то действия, например, на основе этих данных заполнять твой пресловутый формуляр.
Будет неплохо бы попросить тех умников, которые Вам эту программу делали, сделать к программе добавление, чтобы данные автоматом заносились в формуляр.
Сделать что-то средствами языка XML ничего нельзя, стоит тут тебя огорчить.
Парсер.
То что я навскидку написал и есть очень неоптимизированный, очень неуниверсальный парсер. Задача парсера:
1. прочитать теги (пример тега: )
2. прочитать атрибуты тега (пример тега с атрибытами population=4000/>)
3. прочитать занчения тегов New Vasjuki
перевести их во внутренний (для парсера) формат и использовать:
заполнить данными базу данных, передать другой программе, сделать определенную последовательнсть действий и т.д.
-
Перехали в Веб-технологии...
-
Нong
вообще-то если єти данные просто выводятся в формуляр и больше с ними никакой работы не проводится то можно просто наложить XSL-шаблон, получить HTML и вывести там, где нужно
Пример на php+domxml:
// твой XML-документ
$xml = "
ansbach
nue
aschaffenburg
fra
wittenberg
txl
wolfsburg
haj
wuerzburg
nue
";
// xsl-шаблон
$xsl = \'
\';
// собственно сам парсинг
$dom_xsl = domxml_xslt_stylesheet($xsl);
$dom_xml = domxml_open_mem($xml);
$tmp = $dom_xsl->process($dom_xml);
$html = $dom_xsl->result_dump_mem($tmp); // <-- здесь результат преобразования
?>
данный пример просто выводит данные в ХТМЛ-таблице
-
Привет.
Макс какая версия PHP у тебя установлена?
У меня 4.2.2 и всё равно не работает вот ета часть кода:
// собственно сам парсинг
$dom_xsl = domxml_xslt_stylesheet($xsl);
$dom_xml = domxml_open_mem($xml);
$tmp = $dom_xsl->process($dom_xml);
$html = $dom_xsl->result_dump_mem($tmp); // <-- здесь результат преобразования
Или нужно ети функции самому дополнять к исходнику PHP?
Cu.
-
1. я тестил на 4.3.2
2. текст ошибки покажи
3. domxml подключен ?
-
Привет.
Код ошыбки: Fatal error: Call to undefined function: domxml_xslt_stylesheet() in c:\\apache\\htdocs\\test.php
domxml у меня не подключён.
Cu.
-
domxml у меня не подключён.
ну подключи.
можно еще через sablotron (http://ua.php.net/xslt), но domxml пошустрее ИМХО
-
вообщем я установил у себя PHP 4.2.2 и вклучил XMLDOM
DOM/XML enabled
libxml Version 2.4.21
HTML Support enabled
XPath Support enabled
XPointer Support enabled
но ошибка о которой я уже писал осталась?
другой пример сверху на этои странице у меня работал
http://www.infos24.de/xmle/handbuch/8_xml_domxml.htm
-
вообщем я установил у себя PHP 4.2.2
дык у тебя у тебя же эта версия и была :) Зачем опять ее устанавливать ?
У меня phpinfo вот такое выдает про DOMXML:
DOM/XML enabled
DOM/XML API Version 20020815
libxml Version 20507
HTML Support enabled
XPath Support enabled
XPointer Support enabled
DOM/XSLT enabled
libxslt Version 1.0.23
libxslt compiled against libxml Version 2.4.28
А что [p]get_extension_funcs[/p] по этому поводу говорит ?
-
get_extension_funcs выдаёт cледуещее:
Array
(
- => xml_parser_create
[1] => xml_parser_create_ns
[2] => xml_set_object
[3] => xml_set_element_handler
[4] => xml_set_character_data_handler
[5] => xml_set_processing_instruction_handler
[6] => xml_set_default_handler
[7] => xml_set_unparsed_entity_decl_handler
[8] => xml_set_notation_decl_handler
[9] => xml_set_external_entity_ref_handler
[10] => xml_set_start_namespace_decl_handler
[11] => xml_set_end_namespace_decl_handler
[12] => xml_parse
[13] => xml_parse_into_struct
[14] => xml_get_error_code
[15] => xml_error_string
[16] => xml_get_current_line_number
[17] => xml_get_current_column_number
[18] => xml_get_current_byte_index
[19] => xml_parser_free
[20] => xml_parser_set_option
[21] => xml_parser_get_option
[22] => utf8_encode
[23] => utf8_decode
)
У меня тут вопросик еще один появился:
а могу я к примеру филе не смоего сервака считиват к примеру как с регулярными выражениями или на xml так нелзя?
$dokument = domxml_open_file("http://www.не_мой_cервак.de/xml.php");
$meine_elemente = $dokument->get_elements_by_tagname("CITY_NAME");
foreach ($meine_elemente as $knoten)
{
print $knoten->get_content()."
";
}
-
я сейчас перепроверил короче всё можно и в принципе на много проще чем регулярные выр. применять.
теперь буду пытатся всё правилно загонять в формуляр .