Forum Webscript.Ru

Общие => Веб-технологии => Тема начата: Hong от 07 Октября 2003, 20:37:00

Название: вырезания текста?
Отправлено: Hong от 07 Октября 2003, 20:37:00
Привет.
Помогите написать регулярное выражение:


Есть вот такой xml код:


 
 
 
  ansbach
  nue
 

 
  aschaffenburg
  fra
 

 
  wittenberg
  txl
 

 
  wolfsburg
  haj
 

 
  wuerzburg
  nue
 

 

 



Блок c странами и их кодами повторяетcя много раз для различных cтран


  страна
  код
 


Как вырезать динамически страну и код?
Название: вырезания текста?
Отправлено: Yukko от 07 Октября 2003, 21:22:35
Цитировать
Hong:
xml код

А что средствами языка XML пропарсить не судьба??? Мне кажется намного эффективнее будет... попробуй :)

а так чисто из любви к искусству и навскидку:

preg_match_all("/[\\n\\s]*(.*?)<\\/CITY_NAME>[\\n\\s]*(.*?)<\\/EXTERNAL_REF>/s",$line,$matches);
print_r($matches);

На самом деле это решение можно сделать и красивее и эффективнее... а смысл?
Название: вырезания текста?
Отправлено: Нong от 07 Октября 2003, 22:15:52
а как понять пропарсить?

Cмысл тут такой:
на одной странице сделали специално для нас такой вывод из базы данных, который я должен занести у нас на странице в формуляр, вывод каждый день изменяется поетому я думал етот текст вырезать.
Если ты знаеш как ето легче сделать на хмл, буду тебе презнателен за помощ. Я хмл не знаю.
спасибо.

Cu.
Название: вырезания текста?
Отправлено: Yukko от 07 Октября 2003, 22:40:23
Нong
а тебе не кажется, что сначала надо разобраться с технологиями и терминами?
XML - язык обмена данными (сейчас много людей начнет писать, что это не так, но я даю общее его понимание, а не определение). Грубо говоря, если у тебя одна программа выдает из БД результат в виде XML, то другую можно "научить" читать эти данные и делать какие-то действия, например, на основе этих данных заполнять твой пресловутый формуляр.

Будет неплохо бы попросить тех умников, которые Вам эту программу делали, сделать к программе добавление, чтобы данные автоматом заносились в формуляр.

Сделать что-то средствами языка XML ничего нельзя, стоит тут тебя огорчить.

Парсер.
То что я навскидку написал и есть очень неоптимизированный, очень неуниверсальный парсер. Задача парсера:
1. прочитать теги (пример тега: )
2. прочитать атрибуты тега (пример тега с атрибытами population=4000/>)
3. прочитать занчения тегов New Vasjuki
перевести их во внутренний (для парсера) формат и использовать:
заполнить данными базу данных, передать другой программе, сделать определенную последовательнсть действий и т.д.
Название: вырезания текста?
Отправлено: Yukko от 07 Октября 2003, 22:51:14
Перехали в Веб-технологии...
Название: вырезания текста?
Отправлено: Макс от 07 Октября 2003, 23:59:24
Нong
вообще-то если єти данные просто выводятся в формуляр  и больше с ними никакой работы не проводится то можно просто наложить XSL-шаблон, получить HTML и вывести там, где нужно

Пример на php+domxml:
// твой XML-документ
$xml = "



ansbach
nue


aschaffenburg
fra


wittenberg
txl


wolfsburg
haj


wuerzburg
nue



";

// xsl-шаблон
$xsl = \'


   
     
         
           

               
               
           
         
     
City :Ref :

   

\';

// собственно сам парсинг
$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); // <-- здесь результат преобразования
?>

данный пример просто выводит данные в ХТМЛ-таблице
Название: вырезания текста?
Отправлено: Hong от 09 Октября 2003, 12:52:46
Привет.

Макс какая версия 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.
Название: вырезания текста?
Отправлено: Макс от 10 Октября 2003, 17:21:40
1. я  тестил на 4.3.2
2. текст ошибки покажи
3. domxml подключен ?
Название: вырезания текста?
Отправлено: Hong от 10 Октября 2003, 17:34:00
Привет.

Код ошыбки: Fatal error: Call to undefined function: domxml_xslt_stylesheet() in c:\\apache\\htdocs\\test.php

domxml у меня не подключён.

Cu.
Название: вырезания текста?
Отправлено: Макс от 10 Октября 2003, 18:11:28
Цитировать
domxml у меня не подключён.
ну подключи.

можно еще через sablotron (http://ua.php.net/xslt), но domxml пошустрее ИМХО
Название: вырезания текста?
Отправлено: Hong от 10 Октября 2003, 18:44:35
вообщем я установил у себя 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
Название: вырезания текста?
Отправлено: Макс от 10 Октября 2003, 19:07:10
Цитировать
вообщем я установил у себя 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] по этому поводу говорит ?
Название: вырезания текста?
Отправлено: Hong от 10 Октября 2003, 19:20:56
get_extension_funcs выдаёт cледуещее:
Array
(
   
Название: вырезания текста?
Отправлено: Hong от 10 Октября 2003, 20:05:43
я сейчас перепроверил короче всё можно и в принципе на много проще чем регулярные выр. применять.

теперь буду пытатся всё правилно загонять в формуляр .