помогите с 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
    Симпатии:
    311
    нужен модификатор 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 нравится это.