помогите с preg_replace

zilon

Постоялец
Регистрация
30 Июл 2011
Сообщения
370
Реакции
146
надо вырезать всё, что между

HTML:
 [not-group=5][/not-group]

но регулярка которая любое количество любых символов должна вырезать, ничего не вырезает

PHP:
$current_login = preg_replace ( "/.not-group=5.*not-group./", "", $current_login);

а почему она ничего не вырезает непонятно, ошибок нету и результата нету :nezn:

вот всё что надо вырезать

HTML:
[not-group=5]
    <ul class="reset loginbox">
        <li class="loginava">
            <a href="{profile-link}">
                <img src="{foto}" alt="{login}" />
                <b>&nbsp;</b>
            </a>
        </li>
        <li class="loginbtn">
            <a class="lbn" id="logbtn" href="#"><b>{login}</b></a>
            <a class="thide lexit" href="{logout-link}">Выход</a>
                <div id="logform" class="radial">
                    <ul class="reset loginenter">
        [admin-link]<li><a href="{admin-link}" target="_blank"><b>Админпанель</b></a></li>[/admin-link]
                    <li><a href="{profile-link}">Мой профиль</a></li>
                    <li><a href="{favorites-link}">Мои закладки ({favorite-count})</a></li>
                    <li><a href="{newposts-link}">Непрочитанное</a></li>
                    <li><a href="/?do=lastcomments">Последние комментарии</a></li>
                    <li><a href="{stats-link}">Статистика</a></li>
                </ul>
            </div>
        </li>
        <li class="lvsep"><a href="{addnews-link}">Добавить новость</a></li>
        <li class="lvsep"><a class="radial" href="{pm-link}">{new-pm}</a><a href="{pm-link}">Сообщений</a></li>
    </ul>
[/not-group]
 
нужен модификатор s:
s (PCRE_DOTALL)
Если данный модификатор используется, метасимвол "точка" в шаблоне соответствует всем символам, включая перевод строк. Без него - всем, за исключением переводов строк. Этот модификатор эквивалентен записи /s в Perl. Класс символов, построенный на отрицании, например [^a], всегда соответствует переводу строки, независимо от наличия этого модификатора.
т.е. $current_login = preg_replace ( "/.not-group=5.*not-group./s", "", $current_login);


даже лучше будет так: $current_login = preg_replace ( "/(\[not-group=5\]).*(\[\/not-group\])/s", "$1$2", $current_login );
 
вообще-то если на странице идёт какой -то код, потом
[not-group=5]...[/not-group]
потом снова какой-то код
[not-group=5]...[/not-group]

то указанное регулярное выражение удалит "потом снова какой-то код"
для того, чтобы этого не произошло необходимо инвертировать жадность квантификаторов:

$current_login = preg_replace ( "/(\[not-group=5\]).*?(\[\/not-group\])/s", "$1$2", $current_login );
 
Приношу свои извинения, что лезу не по теме, но создать свою пока нет возможности по "требованию" администрации.
Мучаюсь уже 3 день с {favorite-count} из DLE. Необходимо реализовать добавление в избранное через Ajax, а не перезагрузку страницы.
То-есть пользователь жмет добавить в избранное и ({favorite-count} - количество новостей в избранном) меняется на лету. Сами кнопки добавить/удалить реализованы путем вставки в шаблон {favorites} и при нажатии на любую из них меняют дизайн, а вот количество - {favorite-count} меняется только при обновление страницы.
Перерыл весь интернет ничего не нашел по этому поводу. Может кто сталкивался? Сейчас разбираю скрипт по адресу:

engine/classes/js/dle_js.js

Думаю нужно пилить строку:

function doFavorites(a,c,b){ShowLoading("");$.get(dle_root+"engine/ajax/favorites.php". . . .

но, что именно, не знаю :-(
 
Назад
Сверху