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. Esigns - 24 Декабря, 2014 - 18:38:38 - перейти к сообщению
Привет. Есть строка вида:
Цитата:
test test бла бла
<quote="test" param1="123"> текст </quote>
тест текст
<quote="test" param1="123"> текст </quote>

Если написать такую регулярку:
'/\<quote([\s\S]*)<\/quote>/'
Я получу следующее: "test test бла бла"
Все через то, что эта регулярка удаляет все между <quote и <\/quote>. В результате есть который находится между 2 цитатами удаляется.
Как сделать так, чтобы пропали только цитаты, а обычный текст остался?
Спасибо.
(Добавление)
Сделал, может кому пригодится:
CODE (htmlphp):
скопировать код в буфер обмена
  1. preg_replace('#\[quote[^\]]*\].*?\[/quote\]#', '$1$2', $str);
2. GoDr - 15 Января, 2015 - 11:00:37 - перейти к сообщению
Цитата:
Как сделать так, чтобы пропали только цитаты, а обычный текст остался?

Что-то как-то сложно.. Если просто нужно удалить цитаты из текста, то не проще так?
PHP:
скопировать код в буфер обмена
  1. $a = '#<quote(.*?)>.*?<\/quote>#is';
  2. $b = 'test test бла бла
  3.    <quote="test" param1="123"> текст </quote>
  4.    тест текст
  5.    <quote="test" param1="123"> текст </quote>';
  6.  
  7. $c = preg_replace($a, '', $b);
  8.  
  9. echo $c;


А твой код вообще-то не удаляет цитаты.
3. LIME - 15 Января, 2015 - 11:13:36 - перейти к сообщению
А зачем слеш экранировать?
4. GoDr - 15 Января, 2015 - 13:29:09 - перейти к сообщению
LIME пишет:
А зачем слеш экранировать?
Слеш относится к специальным символам, которые нужно экранировать

Специальные символы: [ ] \ / ^ $ . | ? * + ( ) { }
5. esterio - 15 Января, 2015 - 14:18:45 - перейти к сообщению
GoDr пишет:
Слеш относится к специальным символам, которые нужно экранировать

эсли вы об / то не нужно екранировать кроме случая например /\/+/
6. GoDr - 15 Января, 2015 - 14:49:36 - перейти к сообщению
Согласен! Пользовался информацией из Вики... а там слеш включён в метасимволы. Сейчас глянул http://php.net/manual/en/regexp.reference.meta.php, а там его нет Не понял

 

Powered by ExBB FM 1.0 RC1