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
Форумы портала PHP.SU :: Версия для печати :: Регулярка, мать её... :(
Форумы портала PHP.SU » PHP » Напишите за меня, пожалуйста » Регулярка, мать её... :(

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

1. difight - 18 Июня, 2013 - 20:13:57 - перейти к сообщению
Не люблю регулярки, в общем задача перемешать предложения такого вида
{text|text2|text3} text4 {text5|text6|text7|text8|text9} text10 {text11 {text12|text13|text14|{text15|text16|text17|text18} text19} text20|text21}.
Надо выбрать все слова в {} и разделитель | и перемешать их в случайном порядке, моя регулярка выбирает вроде слова но есть косяк


Сам сделал пока так:
PHP:
скопировать код в буфер обмена
  1.  
  2.                 preg_match_all('/{([^}]+)}*/i',$message,$mas);
  3.  
  4.                
  5.                 $str = implode(" ",$mas[1]);
  6.                
  7.                
  8.                 $array=explode('|',$str);
  9.  
  10.                 shuffle($array);
  11.  


Как написать верную регулярку...
2. AlexAnder - 18 Июня, 2013 - 20:30:49 - перейти к сообщению
тс пишет:
Надо выбрать все слова в {} и разделитель |

тут все нужные text'ы? или какие-то упустил?
PHP:
скопировать код в буфер обмена
  1.         (
  2.             [0] => text|text2|text3
  3.             [1] => text5|text6|text7|text8|text9
  4.             [2] => text15|text16|text17|text18
  5.         )

(Добавление)
Спойлер (Отобразить)


вообще не помешало бы написать какие text'ы нужны, т.к. я запутался из-за вложенности {text11 {text12|text13|text14|{text15|text16|text17|text18} text19}
3. vanicon - 18 Июня, 2013 - 20:38:41 - перейти к сообщению

AlexAnder пишет:
Красивое лучше, чем уродливое.
Простое лучше, чем сложное.
Сложное лучше, чем запутанное.

Python?
4. difight - 18 Июня, 2013 - 20:40:14 - перейти к сообщению
AlexAnder пишет:
тс пишет:
Надо выбрать все слова в {} и разделитель |

тут все нужные text'ы? или какие-то упустил?
PHP:
скопировать код в буфер обмена
  1.         (
  2.             [0] => text|text2|text3
  3.             [1] => text5|text6|text7|text8|text9
  4.             [2] => text15|text16|text17|text18
  5.         )

(Добавление)
Спойлер (Отобразить)


вообще не помешало бы написать какие text'ы нужны, т.к. я запутался из-за вложенности {text11 {text12|text13|text14|{text15|text16|text17|text18} text19}


Во вложении все тексты нужны тоже с 11 по 19 Улыбка
(Добавление)
Никто не знает как сделать ?
5. DeepVarvar - 18 Июня, 2013 - 22:35:03 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. $str = "{text11 {text12|text13|text14|{text15|text16|text17|text18} text19}";
  2. preg_match_all("/[^\{\}\|]+/", $str, $m);
6. difight - 18 Июня, 2013 - 22:49:36 - перейти к сообщению
DeepVarvar пишет:
PHP:
скопировать код в буфер обмена
  1. $str = "{text11 {text12|text13|text14|{text15|text16|text17|text18} text19}";
  2. preg_match_all("/[^\{\}\|]+/", $str, $m);

то что надо, спасибо большое Улыбка
7. AlexAnder - 18 Июня, 2013 - 22:57:59 - перейти к сообщению
difight пишет:
DeepVarvar пишет:
PHP:
скопировать код в буфер обмена
  1. $str = "{text11 {text12|text13|text14|{text15|text16|text17|text18} text19}";
  2. preg_match_all("/[^\{\}\|]+/", $str, $m);

то что надо, спасибо большое Улыбка

в чём прикол?
8. DeepVarvar - 19 Июня, 2013 - 02:22:11 - перейти к сообщению
AlexAnder пишет:
в чём прикол?

Так, э:
AlexAnder пишет:
/\{([^\{\}]+)\}/

DeepVarvar пишет:
/[^\{\}\|]+/
9. AlexAnder - 19 Июня, 2013 - 07:46:46 - перейти к сообщению
DeepVarvar пишет:
AlexAnder пишет:
в чём прикол?

Так, э:
AlexAnder пишет:
/\{([^\{\}]+)\}/

DeepVarvar пишет:
/[^\{\}\|]+/

Я просто проверил Ваш код и ... ну Вы понимаете. А так - да, всё как надо Улыбка
PHP:
скопировать код в буфер обмена
  1. $str = "{text|text2|text3} text4 {text5|text6|text7|text8|text9} text10 {text11 {text12|text13|text14|{text15|text16|text17|text18} text19} text20|text21}";
  2. preg_match_all("/\{([^\{\}]+)\}[^\{\}\|]+/", $str, $m);
  3. printr($m);

CODE (html):
скопировать код в буфер обмена
  1. Array
  2.         (
  3.             [0] => text|text2|text3
  4.             [1] => text5|text6|text7|text8|text9
  5.             [2] => text15|text16|text17|text18
  6.         )

(Добавление)

Спойлер (Отобразить)

 

Powered by ExBB FM 1.0 RC1