Модераторы: Aliance, skyboy, MoLeX, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> выбор своиства и значения 
:(
    Опции темы
WhiteSpirit
Дата 29.11.2005, 11:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 242
Регистрация: 1.6.2005
Где: Челябинск

Репутация: нет
Всего: нет



Необходимо и xml вытащить по два поля.
Код

..
<...>
   <Name>a</Name>
   <Value>1</Value>
</...>
...


Есть
Код

$str="/((?<=<Name>)([а-яА-Я\s]*)(?=<\/Name>))((?<=<Value>)[0-9(?:\,|\.)]*(?=<\/Value>))/";

необходимо получить массив вида:
Array($Name=>$Value, ...);

Чё то не могу сообразить как сделать, подскажите плиз

Тока не ругайтесь сильно, с регами я пока на Вы.
--------------------
To beer or no to beer
PM MAIL   Вверх
-=Ustas=-
Дата 30.11.2005, 09:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


Профиль
Группа: Участник Клуба
Сообщений: 2222
Регистрация: 21.1.2005
Где: Краснодар

Репутация: 6
Всего: 69



Код

preg_match_all("/<Name>(.*?)<\/Name>/isU", $string, $matches);
$name = $matches[1][0];

preg_match_all("/<Value>(.*?)<\/Value>/isU", $string, $matches);
$value = $matches[1][0];

Это если тебе всего два значения нужно, а если их больше, тогда массив $matches прогонять в цикле нужно.

P.S. А зачем именно регами, xml-парсер на что?!


--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
-=Ustas=-
Дата 30.11.2005, 09:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


Профиль
Группа: Участник Клуба
Сообщений: 2222
Регистрация: 21.1.2005
Где: Краснодар

Репутация: 6
Всего: 69



Цитата(WhiteSpirit @ 29.11.2005, 11:34)
необходимо получить массив вида:
Array($Name=>$Value, ...);

Соррьки, сразу не увидел smile Тогда можно так:
Код

$myArray = array();

preg_match_all("/<Name>(.*)<\/Name>\s<Value>(.*)<\/Value>/isU", $string, $matches);

for($i = 0; $i < sizeof($matches[1]); $i++) {
    $myArray[$matches[1][$i]] = $matches[2][$i];
}

echo "<pre>";
print_r($myArray);



--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
Mal Hack
Дата 30.11.2005, 22:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 16
Всего: 261



А зачем тут регулярки, если есть средства самого PHP?
Цитата
xml_parse_into_struct -- Parse XML data into an array structure
xml_parse -- Start parsing an XML document
xml_parser_create_ns --  Create an XML parser with namespace support
xml_parser_create -- Create an XML parser
xml_parser_free -- Free an XML parser
xml_parser_get_option -- Get options from an XML parser
xml_parser_set_option -- Set options in an XML parser


http://ru.php.net/manual/ru/function.xml-p...into-struct.php

Не знаю, может есть и еще что-ть, что в PHP5 добавили, с XML не работал, но это будет явно быстрее регулярок.

PM ICQ   Вверх
WhiteSpirit
Дата 3.12.2005, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 242
Регистрация: 1.6.2005
Где: Челябинск

Репутация: нет
Всего: нет



опачки а вот это уже интереснее. В мануале полистал, но что то не совсем понял.
Если я правильно понимаю, то это функции XML Parser. Подскажите плиз где это в удобоваримом варианте, желательно с примерами поглядеть мона?
--------------------
To beer or no to beer
PM MAIL   Вверх
fara
Дата 3.12.2005, 19:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 166
Регистрация: 15.3.2004
Где: С.-Петербург

Репутация: нет
Всего: 2



WhiteSpirit
http://ru.php.net/manual/en/function.xml-p...into-struct.php здесь же все написано:

Example 1. xml_parse_into_struct() example

Код


<?php
$simple = "<para><note>simple note</note></para>";
$p = xml_parser_create();
xml_parse_into_struct($p, $simple, $vals, $index);
xml_parser_free($p);
echo "Index array\n";
print_r($index);
echo "\nVals array\n";
print_r($vals);
?>  



--------------------
Крыша хлопает в ладоши -Спасибо всем за план хороший!
PM MAIL ICQ   Вверх
WhiteSpirit
Дата 4.12.2005, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 242
Регистрация: 1.6.2005
Где: Челябинск

Репутация: нет
Всего: нет



Решил все с помощью domxml. Короче это супер. В три раза быстрее бегает чем через регулярку.
Добавлено @ 13:19
fara Кстати спасибо за ссылочку на хороший пример. Просто у меня мануал на компе скачан PHP4. И там про xml parse довольно скромно описано.
--------------------
To beer or no to beer
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Тексты | Следующая тема »


 




[ Время генерации скрипта: 0.0588 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.