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]   

> Без описания
difight
Отправлено: 18 Июня, 2013 - 20:13:57
Post Id



Посетитель


Покинул форум
Сообщений всего: 355
Дата рег-ции: Нояб. 2011  


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




Не люблю регулярки, в общем задача перемешать предложения такого вида
{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.  


Как написать верную регулярку...

(Отредактировано автором: 18 Июня, 2013 - 20:14:23)

 
My status
 Top
AlexAnder
Отправлено: 18 Июня, 2013 - 20:30:49
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 915
Дата рег-ции: Авг. 2012  
Откуда: Россия


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




тс пишет:
Надо выбрать все слова в {} и разделитель |

тут все нужные 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}


-----
Оказывается, недостаточно читать справочники, чтобы правильно писать коды. sadex ©

Форумы стали местом обучения программированию, а не решения трудных вопросов. KingStar ©
 
 Top
vanicon
Отправлено: 18 Июня, 2013 - 20:38:41
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 808
Дата рег-ции: Янв. 2010  
Откуда: Самара


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





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

Python?


-----
Так было, так есть и так будет
 
 Top
difight
Отправлено: 18 Июня, 2013 - 20:40:14
Post Id



Посетитель


Покинул форум
Сообщений всего: 355
Дата рег-ции: Нояб. 2011  


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




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 Улыбка
(Добавление)
Никто не знает как сделать ?
 
My status
 Top
DeepVarvar Супермодератор
Отправлено: 18 Июня, 2013 - 22:35:03
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


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




PHP:
скопировать код в буфер обмена
  1. $str = "{text11 {text12|text13|text14|{text15|text16|text17|text18} text19}";
  2. preg_match_all("/[^\{\}\|]+/", $str, $m);
 
 Top
difight
Отправлено: 18 Июня, 2013 - 22:49:36
Post Id



Посетитель


Покинул форум
Сообщений всего: 355
Дата рег-ции: Нояб. 2011  


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




DeepVarvar пишет:
PHP:
скопировать код в буфер обмена
  1. $str = "{text11 {text12|text13|text14|{text15|text16|text17|text18} text19}";
  2. preg_match_all("/[^\{\}\|]+/", $str, $m);

то что надо, спасибо большое Улыбка
 
My status
 Top
AlexAnder
Отправлено: 18 Июня, 2013 - 22:57:59
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 915
Дата рег-ции: Авг. 2012  
Откуда: Россия


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




difight пишет:
DeepVarvar пишет:
PHP:
скопировать код в буфер обмена
  1. $str = "{text11 {text12|text13|text14|{text15|text16|text17|text18} text19}";
  2. preg_match_all("/[^\{\}\|]+/", $str, $m);

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

в чём прикол?


-----
Оказывается, недостаточно читать справочники, чтобы правильно писать коды. sadex ©

Форумы стали местом обучения программированию, а не решения трудных вопросов. KingStar ©
 
 Top
DeepVarvar Супермодератор
Отправлено: 19 Июня, 2013 - 02:22:11
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


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




AlexAnder пишет:
в чём прикол?

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

DeepVarvar пишет:
/[^\{\}\|]+/
 
 Top
AlexAnder
Отправлено: 19 Июня, 2013 - 07:46:46
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 915
Дата рег-ции: Авг. 2012  
Откуда: Россия


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




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.         )

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

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


-----
Оказывается, недостаточно читать справочники, чтобы правильно писать коды. sadex ©

Форумы стали местом обучения программированию, а не решения трудных вопросов. KingStar ©
 
 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