1. PHP / Говнокод #5716

    +167

    1. 1
    $new = preg_replace("/((\[{1}[^\[\]]+\]{1})|(\[{1}\]{1}))/", "", $a);

    метод тыка.... зато работеат

    Запостил: Sulik78, 18 Февраля 2011

    Комментарии (22) RSS

    • Вот после такого погромистов и считают больными.
      // я знаю, что такое регексп, но выглядит дико же.
      Ответить
      • дикарь погромист просто
        не осилил мануалы
        /\[.*?\]/
        Ответить
        • Может, это какой-нибудь визуальный конструктор регекспов? :)
          Ответить
          • сама идея хороша )
            не удивлюсь если скоро это появиться в dreamweaver`e
            Ответить
            • > появиться
              неграмотность, Dreamweaver и PHP
              казалось бы, что между ними общего
              Ответить
              • 1. подсветка синтаксиса
                2. "умные" конструкторы
                ------ как раз туда, такой примочке и место
                Ответить
                • хер его знает, вроде бы годный HTML/CSS редактор, тормозной и глючный
                  всё остальное, в том числе скриптинг - лютый, бешеный пиздец
                  Ответить
                  • честно сказать я им пользовался лет 7 назад поэтому помню его еще с тех времен. Он тогда еще Макромедевским был (хотя точно не зная может он их и остался).
                    но в те времена он совсем не радовал. даже для верстки html
                    особенно меня бесило, когда наверстаешь говносайт и он тупо пытает"ь"ся воткнуть в него 10 мета-тегов что, мол его сверстали на таком чуде как Dreamweaver, не знаю на кого это рассчитано? может на тех кто совсем не "программирует" html?
                    щас мне куда проще совсем не пользоваться всякими говноIDE, хотя может это и моразм.
                    Ответить
              • > неграмотность, Dreamweaver и PHP
                надо было хорошо учиться
                Ответить
        • Не так.
          /\[[^\[\]]*\]/
          Ответить
          • Оба выражения /\[.*?\]/ и /\[[^\[\]]*\]/ делают одно и то же, первый построен по принципу ленивых квантификаторов, а второй с явным указанием стоп-символов.

            Поэтому оба эти выражения встретив строку [abc] asd [cba]заменят ее на asd.

            К.О. =)
            Ответить
          • Кстати, экранировать открывающуюся квадратную скобочку нет нужды. Можно сократить до /\[[^[\]]*\]/
            Ответить
            • Тогда уж и закрывающую не нужно: /\[[^[\]]*]/.
              Или, минимальный вариант: /\[[^[]*?]/.
              Ответить
              • Да, действительно, закрывающая уже не нужна.
                Но в /\[[^[]*?\]/ и знак вопроса не нужен.

                В общем, варианта два (вложенные скобочки мы опустим):
                /\[[^[]*\]/ и /\[.*?]/ — второй, имхо, понятнее.
                Ответить
                • вернее второй — /\[.*?\]/
                  Ответить
                • "?" нужен. Чтобы остановиться на первом "]".

                  Это разные регэкспы. И результат их работы разный. Пример я приводил выше.
                  Ответить
                  • Ох, блин, действительно, не в ту сторону прочитал закрывающуюся кв. скобку. Без вопросика тут будет жадновато...

                    Разные, главное определиться, какую задачу решаем, а регэкспы можно слишком разные рисовать. Я смотрю, Вы уже внутренние скобки обрабатываете. А что со строкой то сделать надо? =)

                    P.S.: По наглядности Ваш первый вариант понятнее, иначе сейчас получается достаточно запутанно, а когда четко перечислины стоп-символы [^\[\]] сразу понятно, что происходит, не так быстро запутываешься.
                    Ответить
                    • Надо найти подстроку, начинающуюся на "[", оканчивающуюся на "]" и не содержащую других квадратных скобок внутри.
                      Ответить

    Добавить комментарий