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]   

> Без описания
Esigns
Отправлено: 24 Декабря, 2014 - 18:38:38
Post Id


Гость


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


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




Привет. Есть строка вида:
Цитата:
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);
 
 Top
GoDr
Отправлено: 15 Января, 2015 - 11:00:37
Post Id



Посетитель


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


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




Цитата:
Как сделать так, чтобы пропали только цитаты, а обычный текст остался?

Что-то как-то сложно.. Если просто нужно удалить цитаты из текста, то не проще так?
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;


А твой код вообще-то не удаляет цитаты.


-----
Система управления веб-содержимым Lotos CMS
 
 Top
LIME
Отправлено: 15 Января, 2015 - 11:13:36
Post Id


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


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


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




А зачем слеш экранировать?
 
 Top
GoDr
Отправлено: 15 Января, 2015 - 13:29:09
Post Id



Посетитель


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


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




LIME пишет:
А зачем слеш экранировать?
Слеш относится к специальным символам, которые нужно экранировать

Специальные символы: [ ] \ / ^ $ . | ? * + ( ) { }


-----
Система управления веб-содержимым Lotos CMS
 
 Top
esterio
Отправлено: 15 Января, 2015 - 14:18:45
Post Id



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


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


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




GoDr пишет:
Слеш относится к специальным символам, которые нужно экранировать

эсли вы об / то не нужно екранировать кроме случая например /\/+/
 
 Top
GoDr
Отправлено: 15 Января, 2015 - 14:49:36
Post Id



Посетитель


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


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




Согласен! Пользовался информацией из Вики... а там слеш включён в метасимволы. Сейчас глянул http://php.net/manual/en/regexp.reference.meta.php, а там его нет Не понял


-----
Система управления веб-содержимым Lotos CMS
 
 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