xParser, Fenom и регулярные выражения
В связи с появлением такого нужного дополнения, как xParser, у многих могут возникнуть трудности в процессе парсинга. Ведь зачастую из кода приходится удалять много «мусора» в виде ссылок, скриптов и классов.
Поэтому обращаюсь за помощью к опытным программистам, для которых написать регулярное выражение не составляет труда.
Попробую описать несколько типовых ситуаций, в которых лично у меня возникли затруднения с регулярками, а всех, кто может помочь, прошу отписаться в комментариях. Я и многие другие пользователи будут благодарны за такого рода шпаргалку по регуляркам в xParser и Fenom.
1) Как удалить из текста все ссылки?
5) Как очистить форматирование текста (убрать class="", id="", style="")?
Поэтому обращаюсь за помощью к опытным программистам, для которых написать регулярное выражение не составляет труда.
Попробую описать несколько типовых ситуаций, в которых лично у меня возникли затруднения с регулярками, а всех, кто может помочь, прошу отписаться в комментариях. Я и многие другие пользователи будут благодарны за такого рода шпаргалку по регуляркам в 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 изображений'}
Заранее благодарю всех ответивших. Комментарии: 7
1.
Тут можно тестировать регулярки перед работой
#<a.*>.*</a>#USi
2./\<script.*?\<\/script\>/
3. и 4#<div>.*?</div>#s
ну а дальше можно погуглитьТут можно тестировать регулярки перед работой
{$content | preg_replace : '/\<a.*>.*</a>/ui' : ''}
— не работает.
Насколько знаю, в PCRE модификаторах Феном не работает обрамление регулярки слешами. Используйте символ "!" или "~".
И ещё, вместо
И ещё, вместо
<a.*>
пишите лучше <a [^>]*>
В первом случае вы говорите «любые символы (кроме переноса строки, если в регулярке нет модификатора s)», во втором случае мы говорим «любые символы, кроме закрытия тега > или вообще ничего».
А можно удалить ссылки. но при это оставив анкор ссылок?
Еще возник попутный вопрос.
Нужно получить ссылку на источник каждой спарсенной страницы.
Лучше всего, чтобы это была ссылка из rel=«canonical».
Как этого добиться?
Нужно в primary задании создать отдельное поле?
Нужно получить ссылку на источник каждой спарсенной страницы.
Лучше всего, чтобы это была ссылка из rel=«canonical».
Как этого добиться?
Нужно в primary задании создать отдельное поле?
ребяты, подскажите как со страницы новости взять абзацы в том виде как они там есть. но не брать div
сейчас у меня выглядит это вот так

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

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