|
|
|
| Написал рег. выр. Неработает.
Должно убирать все теги где mode != user
$TP->tpl = preg_replace("|<users.*?mode=\"[^(user)]\".*?>.*?</users>|is", "", $TP->tpl);
Если написать вот так
$TP->tpl = preg_replace("|<users.*?mode=\".*?\".*?>.*?</users>|is", "", $TP->tpl);
, убирает все теги <users>
Что не правельно? | |
|
|
|
|
|
|
|
для: Alexx
(05.04.2007 в 12:33)
| | Напишите пожалуйста, что есть во входном потоке и что должно быть на выходе. | |
|
|
|
|
|
|
|
для: SHAman
(05.04.2007 в 13:06)
| | Входной поток
...
<users mode="join">
...
</users>
<users mode="user"> ... </users>
<users mode="exit">
...
</users>
...
|
На выходе должно быть :
...
<users mode="user"> ... </users>
...
|
| |
|
|
|
|
|
|
|
для: Alexx
(05.04.2007 в 13:25)
| | Попробуй так. Но я не проверял.
$TP->tpl = preg_replace("|<users.*?mode=\"(join|exit)\".*?>.*?</users>|is", "", $TP->tpl); | |
|
|
|
|
|
|
|
для: SHAman
(05.04.2007 в 16:00)
| | Мне другие способы не нужны я хочу именно узнать, какая ошибка тут
$TP->tpl = preg_replace("|<users.*?mode=\"[^(user)]\".*?>.*?</users>|is", "", $TP->tpl); | |
|
|
|
|
|
|
|
для: Alexx
(05.04.2007 в 16:21)
| | Ошибка такая: класс символов не понимает спец-значения скобок, а расценивает их как символы обычные. То есть, у вас режется все, что содержит в кавычках не скобки и не любую из букв u,r,s,e.
Нужно не отрицать то, что нужно оставить, а перечислять то, что нужно вырезать. Если перечислить это проблематично, то нужно выбирать из входного потока то, что точно соответствует тому, что вам нужно, а не удалять ненужное. | |
|
|
|