url— RSS feed URL for processing
| Parameter name | Value type | Sense of value element | What Does It Do | |
|---|---|---|---|---|
| 1 | amp |
presence/absence | do/don't do | It replaces all & occurrences with & (cases like &, ", etc.) |
| 2 | [it's always executed] | — | — | It replaces all HTML entities with appropriate number code in accord with XML standard, e.g. replacing " with " |
| 3 | add_namespace |
string | namespace | It adds namespace by means of add_namespace value pasting in the attribute list of rss tag |
| 4 | remove |
string or array of strings | tag name | It removes all listed tags |
| 5 | rename_from and rename_to |
strings or same length arrays of strings | tag name before and after | It renames rename_from tag to rename_to. If parameters are arrays then rename rename_from[i] tag to rename_to[i] for each i |
| 6 | split |
string or array of strings | tag name | It splits tag content into words (assumption: tag content in CamelCase style) and put each word into the new tags with the same name |
| 7 | replace_description |
string | XPath 1.0 expression | It extracts values from a webpage of each RSS item (webpage URL is extracted from a <link> if it exists, otherwise item is ignored) using XPath expression and replaces content of <description> element with extracted joint (with separator PHP_EOL) value. Note: web page content is being extracted as is, in other words if XPath expression extracts whole HTML tags then description will be contain them. |
| 8 | extend_description |
string | XPath 1.0 expression | It extracts values from a webpage of each RSS item (webpage URL is extracted from a <link> if it exists, otherwise item is ignored) using XPath expression and appends extracted joint (with separator PHP_EOL) value to content of <description> element. Note: web page content is being extracted as is, in other words if XPath expression extracts whole HTML tags then description will be contain them. |
| 9 | break |
string or array of strings | tag name | It pastes <br/> into the tag content instead of each \n and \r character (multiple consecutive characters replaced with single <br/>) |
| 10 | cdata |
string or array of strings | tag name | It wraps tag content in <![CDATA[ ... ]]> block |
| 11 | replace_from, replace_to |
string or array of strings | regular expression | These and the two following parameters are for a tag content replacement. It replaces each match of replace_from (or replace_from[i]) regexp in the content of tag replace_in (or replace_in[i]) in accord with replace_to (or replace_to[i]) regexp. Regexps are in PCRE notation, but starting and ending / character must be absent. These parameters can be used for the ordinary replacement, but \ + * ? [ ^ ] $ ( ) { } = ! < > | : - characters must be escaped by a \ character (e.g, \(). |
| 11 | replace_in |
string or array of strings | tag name | Tag which content will be replaced. If its value is * then replacement will be in each tag of feed (including <pubDate>, <link>, etc.). |
| 11 | replace_sens |
presence/absence | match case or not | Case sensitivity. If replace_sens (or replace_sens[i]) is passed then replacement will be case sensitive else not. |
| 12 | add_category |
string | XPath 1.0 expression | It extracts values from a webpage of each RSS item (webpage URL is extracted from a <link> if it exists, otherwise item is ignored) using XPath expression and add <category> elements (to the appropriate RSS item) for each extracted value. XPath-expression must extract the final text (array of texts) only |
| 13 | include |
string or array of string | Regular expression (PCRE) without wrapped slashes / |
It leaves items where title, description or category matches at least one regular expression |
| 14 | exclude |
string or array of string | Regular expression (PCRE) without wrapped slashes / |
It leaves items where title, description and category do not match all regular expressions |
Several configuration constants are defined at the beginning of index.php script that can be modified:
DEBUGis whether to use debug mode (make some additional actions for debugging if it's enabled). Default value:false.MIN_DOWNLOAD_DELAYis the minimum delay in seconds between RSS-elements' web-pages fetching. Every actual delay is a random value between minimum and maximum values. Default value:0.12(seconds).MAX_DOWNLOAD_DELAYis the maximum delay in seconds between RSS-elements' web-pages fetching. Every actual downloading delay is a random value between minimum and maximum values. Default value:0.94(seconds).USE_WEBPAGE_CACHINGis whether to cache downloaded web-pages to reuse if it's necessary. Default value:true.
-
Replacing
&with&in the tags content, addingxmlns:yandex="http://news.yandex.ru/"namespace, removingdescriptiontag, renamingfull-texttag (fromyandexnamespace) todescription, wrapping content oftitleanddescriptiontags intoCDATAblock, adding<br/>instead of break lines characters in thedescriptiontag content, also replacing allёoccurrences withе(case insensitive) in thedescriptiontag content: in the RSS feed http://milknews.ru/index/novosti-moloko.rssindex.php?url=http%3A%2F%2Fmilknews.ru%2Findex%2Fnovosti-moloko.rss&&add_namespace=xmlns%3Ayandex%3D%22http%3A%2F%2Fnews.yandex.ru%2F%22&remove=description&rename_from=full-text&rename_to=description&cdata[]=title&cdata[]=description&break=description&replace_from=ё&replace_to=е&replace_in=description -
Replacing description of each news with content of news web-page, that matches XPath expression
//div[@class='m-block__text-wrapper']/pin the RSS feed http://www.fontanka.ru/fontanka.rssindex.php?url=http%3A%2F%2Fwww.fontanka.ru%2Ffontanka.rss&replace_description=%2F%2Fdiv%5B%40class%3D%27m-block__text-wrapper%27%5D%2Fp -
Filtering RSS items: it leaves only items that contains substring 'font' and does not contain 'fonts'
index.php?url=https://feeds.feedburner.com/CssTricks&include=font&exclude=fonts
url— URL RSS-ленты для обработки
| Имя параметра | Тип каждого из параметров | Семантика элемента типа | Действие | |
|---|---|---|---|---|
| 1 | amp |
наличие/отсутствие | делать/не делать | замена всех вхождений & на & (для случаев вида &amp;, &quot; и т.п.) |
| 2 | [автоматически всегда] | — | — | замена всех HTML-сущностей на их числовой код, чтобы соответствовать XML, например, " заменяется на " |
| 3 | add_namespace |
строка | пространство имен | добавление пространства имен путем простой вставки содержимого add_namespace в список атрибутов тега rss |
| 4 | remove |
строка или массив строк | имя тега | удаление всех тегов с перечисленными именами |
| 5 | rename_from и rename_to |
строки или одинаковых длин массивы строк | имя тега до и после | переименование тега с именем rename_from в имя rename_to, а в случае массивов переименование тега с именем rename_from[i] в rename_to[i] |
| 6 | split |
строка или массив строк | имя тега | разбиение содержимого тега с заданным именем на отдельные слова (предполагая, что изначальное содержимое оформлено в стиле CamelCase) и помещение их в нижнем регистре в отдельные теги с тем же изначальным именем |
| 7 | replace_description |
string | XPath 1.0 expression | Заменяет содержимое <description> каждого RSS-элемента на извлеченое XPath-выражением значение (в случае нескольких значений их содержимое конкатенируется с разделителем новая строка — PHP_EOL ) с веб-страницы RSS-элемента (адрес которой извлекается из <link>, если он есть, иначе RSS-элемент игнорируется). Замечание: контект с веб-страницы извлекается как есть, иными словами, если XPath-выражение извлекает целые теги, то в описании будет этот же HTML-код. |
| 8 | extend_description |
string | XPath 1.0 expression | Дополняет содержимое <description> каждого RSS-элемента извлеченым XPath-выражением значением (в случае нескольких значений их содержимое конкатенируется с разделителем новая строка — PHP_EOL ) с веб-страницы RSS-элемента (адрес которой извлекается из <link>, если он есть, иначе RSS-элемент игнорируется). Замечание: контект с веб-страницы извлекается как есть, иными словами, если XPath-выражение извлекает целые теги, то в описании будет этот же HTML-код. |
| 9 | break |
строка или массив строк | имя тега | вставка <br/> внутри каждого тега с заданным именем заместо переносов строк \n и \r (если идет несколько переносов подряд, то заменяется лишь на одну вставку <br/>) |
| 10 | cdata |
строка или массив строк | имя тега | заворачивание содержимого тегов с заданным именем в структуру <![CDATA[ ... ]]> |
| 11 | replace_from, replace_to |
строка или массив строк | регулярное выражение | эти и два последующих параметра служат для замен в оборачиваемых тегами текстах. В теге с именем replace_in всякое соответствие регулярному выражению replace_from (в нотации PCRE, без окаймляющих символов /) заменяется в соответствии с регулярным выражением replace_to. Параметры могут использоваться для обычной замены, только любой из символов \ + * ? [ ^ ] $ ( ) { } = ! < > | : - должен быть экранирован символов \ (например, \(). |
| 11 | replace_in |
строка или массив строк | имя тега | может принимать специальное значение *, что приведёт к поиску и замене соответствий во всех тегах, включая служебные (<pubDate>, <link> и др.). |
| 11 | replace_sens |
наличие/отсутствие или массив наличий/отсутствий | учитывать регистр или нет | Если для текущей пары регулярных выражений присутствует replace_sens, то поиск ведётся с учётом регистра, иначе без учёта. |
| 12 | add_category |
строка | XPath-выражение 1.0 | добавление каждому RSS-элементу категорий <category>, содержимое которых определяется XPath-выражением (XPath 1.0), извлекающее список чего-либо со страницы этого RSS-элемента (адрес берётся из тега link, если он есть), впоследствии преобразуемое в список строк. XPath-выражение должно извлекать сразу нужную информацию — значение содержимого или атрибута тега |
| 13 | include |
строка или массив строк | Регулярное выражение в стиле PCRE без символа / в начале и конце |
оставлять только те RSS-элементы, чьи заголовок, описание или категории соответстувуют хотя бы одному регулярному выражению |
| 14 | exclude |
строка или массив строк | Регулярное выражение в стиле PCRE без символа / в начале и конце |
оставлять только те RSS-элементы, чьи заголовок, описание и категории не соответстувуют всем регулярным выражениям |
Пример работы параметра split: подано значение split=tag, поэтому было <tag>КрепостьЧПЗдоровьеНебо</tag>, стало <tag>крепость</tag><tag>чп</tag><tag>здоровье</tag><tag>небо</tag>
В начале скрипта index.php определены несколько конфигурационных констант, которые можно менять на свое усмотрение:
DEBUG— использовать или нет режим отладки (по факту режим отладки лишь делает некоторые дополнительные действия). Значение по умолчанию:false.MIN_DOWNLOAD_DELAY— минимальная задержка в секундах между загрузками веб-страниц RSS-элементов. Величина задержки между загрузками веб-страниц представляет собой случайное значение между минимальным и максимальным значениями. Значение по умолчанию:0.12(секунд).MAX_DOWNLOAD_DELAY— максимальная задержка в секундах между загрузками веб-страниц RSS-элементов. Величина задержки между загрузками веб-страниц представляет собой случайное значение между минимальным и максимальным значениями. Значение по умолчанию:0.94(секунд).USE_WEBPAGE_CACHING— кэшировать или нет загруженные веб-страницы для повторного использования в случае необходимости. Значение по умолчнию:true.
-
В RSS-ленте http://milknews.ru/index/novosti-moloko.rss замена
&на&, добавление пространства именxmlns:yandex="http://news.yandex.ru/", удаление тегаdescription, переименования тегаfull-text(из пространстваyandex) вdescription, заворачивание вCDATAсодержимое теговtitleиdescription, а также добавление<br/>заместо переносов строк в содержимом тегаdescription, дополнительно к этому проводится замена всех вхождений буквыёнае(без учёта регистра) в тегах с именемdescription:index.php?url=http%3A%2F%2Fmilknews.ru%2Findex%2Fnovosti-moloko.rss&&add_namespace=xmlns%3Ayandex%3D%22http%3A%2F%2Fnews.yandex.ru%2F%22&remove=description&rename_from=full-text&rename_to=description&cdata[]=title&cdata[]=description&break=description&replace_from=ё&replace_to=е&replace_in=description -
В RSS-ленте http://www.fontanka.ru/fontanka.rss замена описания новостей на то, что содержится на веб-странице новости, соответствующее XPath-выражению
//div[@class='m-block__text-wrapper']/pindex.php?url=http%3A%2F%2Fwww.fontanka.ru%2Ffontanka.rss&replace_description=%2F%2Fdiv%5B%40class%3D%27m-block__text-wrapper%27%5D%2Fp -
Фильтрация RSS: оставляет только те RSS-элементы, в которых упоминается строка 'font', но при этом не упоминается строка 'fonts'
index.php?url=https://feeds.feedburner.com/CssTricks&include=font&exclude=fonts