За последние 24 часа нас посетили 17055 программистов и 1835 роботов. Сейчас ищут 1645 программистов ...

Оптимизация регулярного выражения

Тема в разделе "Регулярные выражения", создана пользователем ivan.zhadaev, 20 окт 2016.

  1. ivan.zhadaev

    ivan.zhadaev Новичок

    С нами с:
    20 окт 2016
    Сообщения:
    3
    Симпатии:
    0
    Приветствую всех.
    Есть текст вида

    Код (Text):
    1. <font size=2 color=#FF0000>&nbsp;<a href='/link.htm'>Some text</a></font>
    2. <font size=2><a href='/link.htm'>Some text</a></font>
    Нужно извлечь очищенную строку, очищенную от этих тегов. Задачу в принципе решил, но есть желание немного оптимизировать паттерн регулярки. Сейчас от тега font я избавляюсь так

    Код (Text):
    1. /(<font size=[\d]+>(.*?)<\/font>|<font size=[\d]+ color=#[\w]+>(.*?)<\/font>)/
    Немного не понял как составить более изящный паттерн для этой ситуации, подскажите, пожалуйста, в каком направлении двигаться.
     
  2. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.787
    Симпатии:
    1.328
    Адрес:
    Лень
    регулярное изнасилование
    PHP:
    1. <?php
    2. $text = "<font size=2 color=#FF0000>&nbsp;<a href='/link.htm'>Some text</a></font>
    3. <font size=2><a href='/link.htm'>Some text</a></font>";
    4. echo strip_tags($text);
    &nbsp;Some textSome text
     
  3. ivan.zhadaev

    ivan.zhadaev Новичок

    С нами с:
    20 окт 2016
    Сообщения:
    3
    Симпатии:
    0
    Спасибо, но мой вопрос касался именно регулярных выражений.
    Код (Text):
    1. strip_tags()
    мне не подходит по некоторым причинам, regexp использую намеренно
     
  4. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.787
    Симпатии:
    1.328
    Адрес:
    Лень
    по каким? если можно задать какие теги не обрабатывать
     
  5. ivan.zhadaev

    ivan.zhadaev Новичок

    С нами с:
    20 окт 2016
    Сообщения:
    3
    Симпатии:
    0
    ну, например, есть не html контент, который мне нужно определенным образом распарсить.
    Ну а главная причина - узнать мнение более опытных людей как лаконично писать regexp паттерны, потому как с регулярными выражениями работаю крайне редко.
     
  6. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    @ivan.zhadaev в интернете очень легко найти уже готовое под много форматов html, xml, css
     
  7. Emilien

    Emilien Активный пользователь

    С нами с:
    30 июн 2016
    Сообщения:
    246
    Симпатии:
    156
    Удалить все теги
    Код (Text):
    1. /<[^>]+>/
    Удалить только font, span
    Код (Text):
    1. /<\/?(font|span)[^>]*>/
    Удалить все кроме font, span
    Код (Text):
    1. /<\/?(?!font|span)[^>]*>/
     
    denis01 нравится это.