xParser, Fenom и регулярные выражения

В связи с появлением такого нужного дополнения, как xParser, у многих могут возникнуть трудности в процессе парсинга. Ведь зачастую из кода приходится удалять много «мусора» в виде ссылок, скриптов и классов.
Поэтому обращаюсь за помощью к опытным программистам, для которых написать регулярное выражение не составляет труда.
Попробую описать несколько типовых ситуаций, в которых лично у меня возникли затруднения с регулярками, а всех, кто может помочь, прошу отписаться в комментариях. Я и многие другие пользователи будут благодарны за такого рода шпаргалку по регуляркам в xParser и Fenom.

1) Как удалить из текста все ссылки?
{$content | preg_replace : 'регулярка для удаления всех ссылок'}
2) Как удалить из текста все скрипты?
{$content | preg_replace : 'регулярка для удаления всех скриптов'}
3) Как удалить из текста все div-ы с содержимым?
{$content | preg_replace : 'регулярка для удаления всех div-ов с содержимым'}
4) Как в тексте заменить все div-ы на p?
{$content | preg_replace : 'регулярка для замены всех div-ов на < p>< /p>'}

5) Как очистить форматирование текста (убрать class="", id="", style="")?
{$content | preg_replace : 'регулярка для очистки форматирования текста'}
6) Как заменить содержимое alt="" изображений на pagetitle?
{$content | preg_replace : 'регулярка для замены alt изображений'}
Заранее благодарю всех ответивших.
Сергей
06 декабря 2018, 22:12
modx.pro
1
978
0

Комментарии: 7

Михаил
07 декабря 2018, 07:10
2
0
1.
#<a.*>.*</a>#USi
2.
/\<script.*?\<\/script\>/
3. и 4
#<div>.*?</div>#s
ну а дальше можно погуглить

Тут можно тестировать регулярки перед работой
    Сергей
    08 декабря 2018, 15:00
    0
    {$content | preg_replace : '/\<a.*>.*</a>/ui' : ''}
    — не работает.
      Павел Гвоздь
      08 декабря 2018, 20:54
      1
      +1
      Насколько знаю, в PCRE модификаторах Феном не работает обрамление регулярки слешами. Используйте символ "!" или "~".

      И ещё, вместо
      <a.*>
      пишите лучше
      <a [^>]*>
      В первом случае вы говорите «любые символы (кроме переноса строки, если в регулярке нет модификатора s)», во втором случае мы говорим «любые символы, кроме закрытия тега > или вообще ничего».
        Андрей
        02 декабря 2020, 12:40
        0
        А можно удалить ссылки. но при это оставив анкор ссылок?
    Сергей
    10 декабря 2018, 13:02
    0
    Еще возник попутный вопрос.
    Нужно получить ссылку на источник каждой спарсенной страницы.
    Лучше всего, чтобы это была ссылка из rel=«canonical».
    Как этого добиться?
    Нужно в primary задании создать отдельное поле?
      Евгений
      23 ноября 2020, 23:19
      0
      ребяты, подскажите как со страницы новости взять абзацы в том виде как они там есть. но не брать div

      сейчас у меня выглядит это вот так

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

      ПС. в ТП писал там глухо
        Евгений
        23 ноября 2020, 23:35
        0
        нашел такую строку в другом задании xparser возможно оно как то связано
        @INLINE {$news_content | preg_replace : '/<div class="rtcode">.*?<\/div>|<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>|<span>.*?RT.*?<\/span>|<(.|\n)*?>/'}
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        7