Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
Страницы: (2) [1] 2  ( Перейти к первому непрочитанному сообщению )  
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> парсер yaml, не могу понять как спарсить в многомерный массив
pamparam  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Старик
***

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 101
Пользователь №: 29455
На форуме: 5 лет, 6 месяцев, 19 дней
Карма: 1




вот пример кода который нужно спарсить..

$yaml = <<<EOD
---
invoice: 34843
date: "2001-01-23"
bill-to: &id001
given: Chris
family: Dumars
address:
lines: |-
458 Walkman Dr.
Suite #292
city: Royal Oak
state: MI
postal: 48046
ship-to: *id001
product:
- sku: BL394D
quantity: 4
description: Basketball
price: 450
- sku: BL4438H
quantity: 1
description: Super Hoop
price: 2392
tax: 251.420000
total: 4443.520000
comments: Late afternoon is best. Backup contact is Nancy Billsmer @ 338-4338.
...

EOD;



вот то что ожидается

array(8) {
["invoice"]=>
int(34843)
[
"date"]=>
string(10) "2001-01-23"
["bill-to"]=>
&
array(3) {
["given"]=>
string(5) "Chris"
["family"]=>
string(6) "Dumars"
["address"]=>
array(4) {
["lines"]=>
string(34) "458 Walkman Dr.
Suite #292"

["city"]=>
string(9) "Royal Oak"
["state"]=>
string(2) "MI"
["postal"]=>
int(48046)
}
}

["ship-to"]=>
&
array(3) {
["given"]=>
string(5) "Chris"
["family"]=>
string(6) "Dumars"
["address"]=>
array(4) {
["lines"]=>
string(34) "458 Walkman Dr.
Suite #292"

["city"]=>
string(9) "Royal Oak"
["state"]=>
string(2) "MI"
["postal"]=>
int(48046)
}
}

["product"]=>
array(2) {
[0]=>
array(4) {
["sku"]=>
string(6) "BL394D"
["quantity"]=>
int(4)
[
"description"]=>
string(10) "Basketball"
["price"]=>
int(450)
}
[1]=>
array(4) {
["sku"]=>
string(7) "BL4438H"
["quantity"]=>
int(1)
[
"description"]=>
string(10) "Super Hoop"
["price"]=>
int(2392)
}
}

["tax"]=>
float(251.42)
[
"total"]=>
float(4443.52)
[
"comments"]=>
string(68) "Late afternoon is best. Backup contact is Nancy Billsmer @ 338-4338."
}


так делаю одномерный

$pattern = '#[\w-]+: [a-z0-9"-.]+#';
preg_match_all($pattern, $yaml, $matches, PREG_OFFSET_CAPTURE);

foreach($matches as $val){
foreach($val as $k){
$array = explode(":",$k[0]);
$yaml_dec[$array[0]]= $array[1];
}
}



одномерный могу сделать а многомерный не могу понять как
подскажите куда смотреть?
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 15897
Пользователь №: 6543
На форуме: 8 лет, 5 месяцев, 20 дней
Карма: 300

Трезвый :
6 лет, 2 месяца, 30 дней


Ну для начала нужно сам язык YAML посмотреть. Там не только двоеточия есть. Там отступы важны к примеру.

Всё конечно сильно замудрено будет пока делать, но то, что использует Symfony в конфигах, пожалуй надо. И сначала одну строчку нужно по всем правилам распарсить. Потом этим методом можно будет по всем пройтись.


--------------------
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 15897
Пользователь №: 6543
На форуме: 8 лет, 5 месяцев, 20 дней
Карма: 300

Трезвый :
6 лет, 2 месяца, 30 дней


И начинать надо с чего-нибудь попроще. Вот как в вики допустим пример:
bindings:
- ircEvent: PRIVMSG
method: newUri
regexp: '^http://.*'
- ircEvent: PRIVMSG
method: deleteUri
regexp: '^delete.*'
- ircEvent: PRIVMSG
method: randomUri
regexp: '^random.*'


--------------------
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 15897
Пользователь №: 6543
На форуме: 8 лет, 5 месяцев, 20 дней
Карма: 300

Трезвый :
6 лет, 2 месяца, 30 дней


Начинать нужно с подготовки исходника. Очистить от комментариев для начала. От заголовка и от маркеров. Чтобы потом парсить уже саму информацию.


--------------------
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
pamparam  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Старик
***

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 101
Пользователь №: 29455
На форуме: 5 лет, 6 месяцев, 19 дней
Карма: 1




Понял
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Invis1ble  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме




******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 11859
Пользователь №: 23195
На форуме: 6 лет, 8 месяцев
Карма: 433

Трезвый :
7 лет, 6 месяцев, 30 дней


есть готовые парсеры, в том числе и в PECL



Спустя 3 минуты, 25 секунд Invis1ble написал(а):
а, не посмотрел на раздел smile.gif
велосипеды-велосипедики biggrin.gif


--------------------
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 15897
Пользователь №: 6543
На форуме: 8 лет, 5 месяцев, 20 дней
Карма: 300

Трезвый :
6 лет, 2 месяца, 30 дней


Да есть, но я хочу по дефолту чтобы работало. А эти не идут в стандартном наборе. Посмотрел симфонийский, уж очень он тяжелый и много лишнего там. Напишем свой потихоньку, за одно и научимся чему-нибудь. smile.gif


--------------------
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Invis1ble  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме




******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 11859
Пользователь №: 23195
На форуме: 6 лет, 8 месяцев
Карма: 433

Трезвый :
7 лет, 6 месяцев, 30 дней


курить в сторону AST и тому подобного


--------------------
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 15897
Пользователь №: 6543
На форуме: 8 лет, 5 месяцев, 20 дней
Карма: 300

Трезвый :
6 лет, 2 месяца, 30 дней


Спасибо. smile.gif


--------------------
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
volter9  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Местный хипстер
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 566
Пользователь №: 38946
На форуме: 3 года, 1 месяц, 5 дней
Карма: 64




Цитата (twin @ 25.10.2015 - 20:41)
Да есть, но я хочу по дефолту чтобы работало. А эти не идут в стандартном наборе. Посмотрел симфонийский, уж очень он тяжелый и много лишнего там. Напишем свой потихоньку, за одно и научимся чему-нибудь. smile.gif

Есть более легкий YAML парсер:
https://github.com/mustangostang/spyc/


--------------------
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 15897
Пользователь №: 6543
На форуме: 8 лет, 5 месяцев, 20 дней
Карма: 300

Трезвый :
6 лет, 2 месяца, 30 дней


Спасибо, пороемся там тоже. smile.gif


--------------------
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
pamparam  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Старик
***

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 101
Пользователь №: 29455
На форуме: 5 лет, 6 месяцев, 19 дней
Карма: 1




Спасибо..
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
pamparam  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Старик
***

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 101
Пользователь №: 29455
На форуме: 5 лет, 6 месяцев, 19 дней
Карма: 1




вот так решил убрать все не нужное в начале и в конце yaml..


function cleanup($value)
{
$value = str_replace(array("\r\n", "\r"), "\n", $value);
// убираем заголовок
$value = preg_replace('#^\%YAML[: ][\d\.]+.*\n#u', '', $value);

// убираем коммент
$value = preg_replace('#^(\#.*?\n)+#s', '', $value);

// убираем маркер(---)
$value = preg_replace('#^\-\-\-.*?\n#s', '', $value);

// убираем маркер (...)
$value = preg_replace('#\.\.\.\s*$#', '', $value);
return $value;
}

убирает такие (--- ....) маркеры и комментарии в начале

P.S не без symfony )))
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 15897
Пользователь №: 6543
На форуме: 8 лет, 5 месяцев, 20 дней
Карма: 300

Трезвый :
6 лет, 2 месяца, 30 дней


Сразу в класс оформи.


--------------------
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Invis1ble  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме




******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 11859
Пользователь №: 23195
На форуме: 6 лет, 8 месяцев
Карма: 433

Трезвый :
7 лет, 6 месяцев, 30 дней


Цитата (pamparam @ 26.10.2015 - 19:12)
P.S не без symfony )))

сделали б уже форк, да прошлись в IDE Ctrl+H -> Symfony -> ABC, делов то laugh.gif
а то "Напишем свой", но не совсем biggrin.gif


--------------------
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темыСтраницы: (2) [1] 2  Ответ в темуСоздание новой темыСоздание опроса