Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Имена элементов массива при парсинге xml.
 
 автор: IsIra   (06.08.2009 в 04:22)   письмо автору
 
 


<?
    $post 
'
    <?xml version="1.0" encoding="windows-1251"?>
    <request uid="123456789" protocol="protocoltype" date="Mon, Dec 5, 2007 17:45:05 MSK" mt="false">
        <abonent isnn="1121" phone="+79211234567" operator="Megafon" additional="">
        <conent-text content-type="datatype">содержимое</content-text>
    </request>
    '
;
    
    
    
preg_match_all("#\"([a-zA-Zа-яА-Я0-9,.:+ ]*)\"#i"$post$regs);

echo 
"<pre>";
print_r($regs[1]);
?>


На выходе получаю

Array
(
    [0] => 1.0
    [1] => 123456789
    [2] => protocoltype
    [3] => Mon, Dec 5, 2007 17:45:05 MSK
    [4] => false
    [5] => 1121
    [6] => +79211234567
    [7] => Megafon
    [8] => 
    [9] => datatype
)

а хотелось бы

Array
(
    ['version'] => 1.0
    ['uid'] => 123456789
    ['protocol'] => protocoltype
 ....
    ['content-type'] => datatype
)

- Возможно ли так сделать?
- Можно как нибудь этим же выражением получить "содержимое" в content-text? или лучше сделать это отдельным выражением?
И еще буду благодарна если подскажите как усовершенстовать рег. выражение.
Спасибо!

  Ответить  
 
 автор: ..........   (06.08.2009 в 17:00)
 
   для: IsIra   (06.08.2009 в 04:22)
 

есть чтото похожее
<pre><?php
$txt 
'<?xml version="1.0" encoding="windows-1251"?> 
    <request uid="123456789" protocol="protocoltype" date="Mon, Dec 5, 2007 17:45:05 MSK" mt="false"> 
        <abonent isnn="1121" phone="+79211234567" operator="Megafon" additional=""> 
        <conent-text content-type="datatype">содержимое</content-text> 
    </request> 
'
;

$xp xml_parser_create();
xml_parse_into_struct($xp ,$txt $values);

print_r($values);

xml_parser_free($xp);
?>
только массив $values получится в utf-8 кодировке
и не совсем такой структуры.
такой как вы хотите получить наверное можно , но получится заточенный под именно такой xml текст

  Ответить  
 
 автор: IsIra   (06.08.2009 в 22:37)   письмо автору
 
   для: ..........   (06.08.2009 в 17:00)
 

Это подойдет, спасибо. Главное чтобы имена элементов были.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования