помогите с preg_replace

Тема в разделе "Как сделать...", создана пользователем zilon, 4 июн 2013.

  1. zilon

    zilon

    Регистр.:
    30 июл 2011
    Сообщения:
    370
    Симпатии:
    147
    надо вырезать всё, что между

    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]
     
  2. PapaJoe

    PapaJoe

    Регистр.:
    4 авг 2008
    Сообщения:
    620
    Симпатии:
    312
    нужен модификатор s:
    т.е. $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 );
     
    zilon нравится это.
  3. fcomp22

    fcomp22 Создатель

    Регистр.:
    22 фев 2013
    Сообщения:
    10
    Симпатии:
    6
    вообще-то если на странице идёт какой -то код, потом
    [not-group=5]...[/not-group]
    потом снова какой-то код
    [not-group=5]...[/not-group]

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

    $current_login = preg_replace ( "/(\[not-group=5\]).*?(\[\/not-group\])/s", "$1$2", $current_login );
     
    zilon нравится это.
  4. у231у21

    у231у21 Писатель

    Регистр.:
    3 сен 2017
    Сообщения:
    2
    Симпатии:
    0
    Приношу свои извинения, что лезу не по теме, но создать свою пока нет возможности по "требованию" администрации.
    Мучаюсь уже 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". . . .

    но, что именно, не знаю :-(