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
80
0

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

Михаил
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)», во втором случае мы говорим «любые символы, кроме закрытия тега > или вообще ничего».
Сергей
10 декабря 2018, 13:02
0
Еще возник попутный вопрос.
Нужно получить ссылку на источник каждой спарсенной страницы.
Лучше всего, чтобы это была ссылка из rel=«canonical».
Как этого добиться?
Нужно в primary задании создать отдельное поле?