Модераторы: Aliance, skyboy, MoLeX, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Исключить вложенные тэги 
:(
    Опции темы
spamoney
Дата 9.8.2011, 12:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 8.7.2008

Репутация: нет
Всего: нет



Здравствуйте, есть текст:
Код
$str=' 
[spoiler] 
Спойлер-1 
[/spoiler] 
[spoiler] 
Спойлер-2 
  [spoiler] 
  Спойлер-2-1 
  [/spoiler] 
  [spoiler] 
  Спойлер-2-2 
    [spoiler] 
    Спойлер-2-2-1 
    [/spoiler] 
  [/spoiler] 
  [spoiler] 
  Спойлер-2-3 
  [/spoiler] 
[/spoiler] 
[spoiler] 
Спойлер-3-s [ ]
[/spoiler] 
';

Нужна регулярка, которая бы нашла текст между [ spoiler] [ /spoiler], в которых нет вложенного [spoiler], т.е из текста выше регулярка должна вернуть:
Код
[0]=>Спойлер-1
[1]=>Спойлер-2-1
[2]=>Спойлер-2-2-1
[3]=>Спойлер-2-3
[4]=>Спойлер-3-s [ ]


Понимаю, что нужно как-то использовать негативный просмотр вперёд/назад, что-то вроде:

Код

preg_match_all('#\[spoiler\](.*?)(?!\[spoiler\])\[/spoiler\]#', $str, $matches);


но что-то не получается...
PM MAIL   Вверх
NLspieler
Дата 9.8.2011, 21:32 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 619
Регистрация: 13.10.2008
Где: Берлин

Репутация: 1
Всего: 19



Код

$text = '[spoiler] 
Спойлер-1 
[/spoiler] 
[spoiler] 
Спойлер-2 
  [spoiler] 
  Спойлер-2-1 
  [/spoiler] 
  [spoiler] 
  Спойлер-2-2 
    [spoiler] 
    Спойлер-2-2-1 
    [/spoiler] 
  [/spoiler] 
  [spoiler] 
  Спойлер-2-3 
  [/spoiler] 
[/spoiler] 
[spoiler] 
Спойлер-3-s [ ]
[/spoiler]';

$text = str_replace('[spoiler]', '리', $text);
$pattern = '|리([^리]+)\[/spoiler\]|Uus' ;
preg_match_all ($pattern , $text, $matches);
print_r($matches);

PM MAIL   Вверх
Evghenusi
Дата 3.9.2011, 03:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


майский жук
**


Профиль
Группа: Участник
Сообщений: 506
Регистрация: 3.8.2006
Где: Молдова, Кишинёв

Репутация: 2
Всего: 15



Код

|\[spoiler\]((?:(?!\[/?spoiler\]).)*?)\[/spoiler\]|s

Код
Всего совпадений 5

1 : [spoiler\] Спойлер-1 [/spoiler\]
1.1 : Спойлер-1

2 : [spoiler] Спойлер-2-1 [/spoiler]
2.1 : Спойлер-2-1

3 : [spoiler] Спойлер-2-2-1 [/spoiler]
3.1 : Спойлер-2-2-1

4 : [spoiler] Спойлер-2-3 [/spoiler]
4.1 : Спойлер-2-3

5 : [spoiler] Спойлер-3-s [ ] [/spoiler]
5.1 : Спойлер-3-s [ ] 


Это сообщение отредактировал(а) Evghenusi - 3.9.2011, 03:35
PM WWW   Вверх
spamoney
Дата 3.9.2011, 05:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 8.7.2008

Репутация: нет
Всего: нет



Evghenusi, огромное спасибо!!)
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Тексты | Следующая тема »


 




[ Время генерации скрипта: 0.0672 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.