Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Парсер "скобок"

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
vestmar
Отправлено: 06 Сентября, 2014 - 21:55:28
Post Id


Новичок


Покинул форум
Сообщений всего: 14
Дата рег-ции: Авг. 2014  


Помог: 0 раз(а)




Вот к примеру многоуровне-вложенное предложение -

{Пошёл Вася {в клуб {тусить|бухать}|в лес {по грибы|по ягоды}}|Сеня скрывается {от ментов {за грабеж|за нападение}|от прокуратуры {за неуплату налогов|за дело}}}

Подскажите пожалуйста как такую строку в массив загнать

вот так:
PHP:
скопировать код в буфер обмена
  1. (
  2. [0] => Пошёл Вася {в клуб {тусить|бухать}|в лес {по грибы|по ягоды}}
  3. [1] => Сеня скрывается {от ментов {за грабеж|за нападение}|от прокуратуры {за неуплату налогов|за дело}}
  4. )
 
 Top
dcc0
Отправлено: 06 Сентября, 2014 - 22:04:19
Post Id


Участник


Покинул форум
Сообщений всего: 1043
Дата рег-ции: Июль 2014  


Помог: 10 раз(а)




Есть же очевидный разделитель. Две скобки фигурные:
Или надо сохранить все скобки?
PHP:
скопировать код в буфер обмена
  1.  
  2. $pizza  = "{Пошёл Вася {в клуб {тусить|бухать}|в лес {по грибы|по ягоды}}|Сеня скрывается {от ментов {за грабеж|за нападение}|от прокуратуры {за неуплату налогов|за дело}}}";
  3. $out = preg_replace("/\}\}\|/", "} + {", $pizza);
  4. $pieces = explode(" + ", $out);
  5. print_r($pieces);
  6.  


Если фигурные скобки значения не имеют, то так:
PHP:
скопировать код в буфер обмена
  1. <?
  2. $pizza  = "{Пошёл Вася {в клуб {тусить|бухать}|в лес {по грибы|по ягоды}}|Сеня скрывается {от ментов {за грабеж|за нападение}|от прокуратуры {за неуплату налогов|за дело}}}";
  3. $pieces = explode("}}|", $pizza);
  4. print_r($pieces);
  5. ?>

(Отредактировано автором: 06 Сентября, 2014 - 22:27:45)



-----
Март 2021. Бросил программирование
 
 Top
vestmar
Отправлено: 06 Сентября, 2014 - 23:41:08
Post Id


Новичок


Покинул форум
Сообщений всего: 14
Дата рег-ции: Авг. 2014  


Помог: 0 раз(а)




Здорово! Действительно работает)

[1] => {Сеня {скрывается|тарится} {от ментов {за грабеж|за нападение}|от прокуратуры {за неуплату налогов|за дело}}

теперь самое сложное) имеет цифру "1886153900" возможно опираясь на неё выбрать

"Сеня скрывается от ментов за нападение".

Т.е. выборка вроде случайная, но она привязана к цифе, я смог составить только для выбора простого значения из переменной $a = "{text1|text2} {key1|key2}";
выборку из каждого {||} одно и выводит в строку...
 
 Top
dcc0
Отправлено: 07 Сентября, 2014 - 09:34:10
Post Id


Участник


Покинул форум
Сообщений всего: 1043
Дата рег-ции: Июль 2014  


Помог: 10 раз(а)




Проснулся я сегодня утром и сразу вспомнил ваш вопрос и понял, что не очень решение я вам подсказал с заменой. strtr должна быстрее работать, но все равно от количества данных зависит и задач:

PHP:
скопировать код в буфер обмена
  1. $arr  = "{Пошёл Вася {в клуб {тусить|бухать}|в лес {по грибы|по ягоды}}|Сеня скрывается {от ментов {за грабеж|за нападение}|от прокуратуры {за неуплату налогов|за дело}}}";
  2. $change = array("}}|" => "}+{");
  3. $out1 = strtr($arr, $change);
  4. $out = explode("+", $out1);
  5. print_r($out);

(Добавление)
vestmar пишет:
теперь самое сложное) имеет цифру "1886153900" возможно опираясь на неё выбрать

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

(Отредактировано автором: 07 Сентября, 2014 - 09:56:27)



-----
Март 2021. Бросил программирование
 
 Top
vestmar
Отправлено: 07 Сентября, 2014 - 10:03:45
Post Id


Новичок


Покинул форум
Сообщений всего: 14
Дата рег-ции: Авг. 2014  


Помог: 0 раз(а)




Из этой системы, мне нужно собрать "генератор случайных фраз", сами тексты готовит спец. прога, синонимизатор со вложенными значениями, {А может быть корова|{а может быть собака|а может быть ворона}} и к каждому животному идёт ещё {} выражение рассказывающее о них) углубляя возможность текста, с одной строки можно составить пару сотен случайных предложений... 1886153900 число не случайное это crc32 от строки, эта строка будет генерироваться...
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


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



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB