Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Вырезать по неск. словам.
 
 автор: Alexx   (05.04.2007 в 12:33)   письмо автору
 
 

Написал рег. выр. Неработает.
Должно убирать все теги где mode != user

$TP->tpl = preg_replace("|<users.*?mode=\"[^(user)]\".*?>.*?</users>|is", "", $TP->tpl);

Если написать вот так
$TP->tpl = preg_replace("|<users.*?mode=\".*?\".*?>.*?</users>|is", "", $TP->tpl);
, убирает все теги <users>

Что не правельно?

   
 
 автор: SHAman   (05.04.2007 в 13:06)   письмо автору
 
   для: Alexx   (05.04.2007 в 12:33)
 

Напишите пожалуйста, что есть во входном потоке и что должно быть на выходе.

   
 
 автор: Alexx   (05.04.2007 в 13:25)   письмо автору
 
   для: SHAman   (05.04.2007 в 13:06)
 

Входной поток

  ...
   <users mode="join"> 
     ... 
   </users>
   <users mode="user">  ...  </users> 
   <users mode="exit"> 
     ... 
   </users>
    
 ...
 


На выходе должно быть :

  ...
   <users mode="user">  ...  </users> 
 ...
 

   
 
 автор: SHAman   (05.04.2007 в 16:00)   письмо автору
 
   для: Alexx   (05.04.2007 в 13:25)
 

Попробуй так. Но я не проверял.

$TP->tpl = preg_replace("|<users.*?mode=\"(join|exit)\".*?>.*?</users>|is", "", $TP->tpl);

   
 
 автор: Alexx   (05.04.2007 в 16:21)   письмо автору
 
   для: SHAman   (05.04.2007 в 16:00)
 

Мне другие способы не нужны я хочу именно узнать, какая ошибка тут

$TP->tpl = preg_replace("|<users.*?mode=\"[^(user)]\".*?>.*?</users>|is", "", $TP->tpl);

   
 
 автор: SHAman   (05.04.2007 в 17:00)   письмо автору
 
   для: Alexx   (05.04.2007 в 16:21)
 

Ошибка такая: класс символов не понимает спец-значения скобок, а расценивает их как символы обычные. То есть, у вас режется все, что содержит в кавычках не скобки и не любую из букв u,r,s,e.

Нужно не отрицать то, что нужно оставить, а перечислять то, что нужно вырезать. Если перечислить это проблематично, то нужно выбирать из входного потока то, что точно соответствует тому, что вам нужно, а не удалять ненужное.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования