Автор Тема: вырезания текста?  (Прочитано 6983 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Hong

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 57
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.hong.de
вырезания текста?
« : 07 Октября 2003, 20:37:00 »
Привет.
Помогите написать регулярное выражение:


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


 
 
 
  ansbach
  nue
 

 
  aschaffenburg
  fra
 

 
  wittenberg
  txl
 

 
  wolfsburg
  haj
 

 
  wuerzburg
  nue
 

 

 



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


  страна
  код
 


Как вырезать динамически страну и код?

Оффлайн Yukko

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1586
  • +0/-0
  • 0
    • Просмотр профиля
    • http://estrabota.com.ua
вырезания текста?
« Ответ #1 : 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

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 3
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.hong.de
вырезания текста?
« Ответ #2 : 07 Октября 2003, 22:15:52 »
а как понять пропарсить?

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

Cu.

Оффлайн Yukko

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1586
  • +0/-0
  • 0
    • Просмотр профиля
    • http://estrabota.com.ua
вырезания текста?
« Ответ #3 : 07 Октября 2003, 22:40:23 »
Нong
а тебе не кажется, что сначала надо разобраться с технологиями и терминами?
XML - язык обмена данными (сейчас много людей начнет писать, что это не так, но я даю общее его понимание, а не определение). Грубо говоря, если у тебя одна программа выдает из БД результат в виде XML, то другую можно "научить" читать эти данные и делать какие-то действия, например, на основе этих данных заполнять твой пресловутый формуляр.

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

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

Парсер.
То что я навскидку написал и есть очень неоптимизированный, очень неуниверсальный парсер. Задача парсера:
1. прочитать теги (пример тега: )
2. прочитать атрибуты тега (пример тега с атрибытами population=4000/>)
3. прочитать занчения тегов New Vasjuki
перевести их во внутренний (для парсера) формат и использовать:
заполнить данными базу данных, передать другой программе, сделать определенную последовательнсть действий и т.д.
работа в Украине

Оффлайн Yukko

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1586
  • +0/-0
  • 0
    • Просмотр профиля
    • http://estrabota.com.ua
вырезания текста?
« Ответ #4 : 07 Октября 2003, 22:51:14 »
Перехали в Веб-технологии...
работа в Украине

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
вырезания текста?
« Ответ #5 : 07 Октября 2003, 23:59:24 »
Нong
вообще-то если єти данные просто выводятся в формуляр  и больше с ними никакой работы не проводится то можно просто наложить XSL-шаблон, получить HTML и вывести там, где нужно

Пример на php+domxml:
<?
// твой XML-документ
$xml "<RESPONSE_XML>
<COUNTRY>
<CITIES>
<CITY>
<CITY_NAME>ansbach</CITY_NAME> 
<EXTERNAL_REF>nue</EXTERNAL_REF> 
</CITY>
<CITY>
<CITY_NAME>aschaffenburg</CITY_NAME> 
<EXTERNAL_REF>fra</EXTERNAL_REF> 
</CITY>
<CITY>
<CITY_NAME>wittenberg</CITY_NAME> 
<EXTERNAL_REF>txl</EXTERNAL_REF> 
</CITY>
<CITY>
<CITY_NAME>wolfsburg</CITY_NAME> 
<EXTERNAL_REF>haj</EXTERNAL_REF> 
</CITY>
<CITY>
<CITY_NAME>wuerzburg</CITY_NAME> 
<EXTERNAL_REF>nue</EXTERNAL_REF> 
</CITY>
</CITIES>
</COUNTRY>
</RESPONSE_XML>"
;

// xsl-шаблон
$xsl = \'<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" version="1.0" indent="yes"/>
   <xsl:template match="//CITIES">
      <table>
         <xsl:for-each select="CITY">
            <tr>
               <td><xsl:text>City :</xsl:text><xsl:value-of select="CITY_NAME"/></td>
               <td><xsl:text>Ref :</xsl:text><xsl:value-of select="EXTERNAL_REF"/></td>
            </tr>
         </xsl:for-each>
      </table>
   </xsl:template>
</xsl:stylesheet>\';

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


данный пример просто выводит данные в ХТМЛ-таблице
« Последнее редактирование: 08 Октября 2003, 00:05:14 от Макс »
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн Hong

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 57
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.hong.de
вырезания текста?
« Ответ #6 : 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.

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
вырезания текста?
« Ответ #7 : 10 Октября 2003, 17:21:40 »
1. я  тестил на 4.3.2
2. текст ошибки покажи
3. domxml подключен ?
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн Hong

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 57
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.hong.de
вырезания текста?
« Ответ #8 : 10 Октября 2003, 17:34:00 »
Привет.

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

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

Cu.

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
вырезания текста?
« Ответ #9 : 10 Октября 2003, 18:11:28 »
Цитировать
domxml у меня не подключён.
ну подключи.

можно еще через sablotron, но domxml пошустрее ИМХО
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн Hong

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 57
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.hong.de
вырезания текста?
« Ответ #10 : 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

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
вырезания текста?
« Ответ #11 : 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] по этому поводу говорит ?
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн Hong

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 57
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.hong.de
вырезания текста?
« Ответ #12 : 10 Октября 2003, 19:20:56 »
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()."
";
}

Оффлайн Hong

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 57
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.hong.de
вырезания текста?
« Ответ #13 : 10 Октября 2003, 20:05:43 »
я сейчас перепроверил короче всё можно и в принципе на много проще чем регулярные выр. применять.

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

 

Sitemap 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