Ето ти едно решение на въпроса:
GeSHi (PHP):
#!/usr/bin/php
<?php
$path = '/пълен/път/до/папката/на/скрипта';
$smsfrom = 'кратък@email.адрес';
$smsto = '359xxxxxxxxx@sms.mtel.net';
$delimiter = ' > '; // Разделящият елемент между името на feed-а и текста на новината в sms-а
$rssfeed[0] = array('name' => 'име_на_латиница_без_интервали_и_специални_знаци', 'address' => 'http://адрес',
'element' => 'име на полето, което съдържа една новина',
'getfield' => 'име на полето, което искаш да ти се праща');
$rssfeed[1] = array('name' => 'друго_име_на_латиница_без_интервали_и_специални_знаци', 'address' => 'http://друг.адрес',
'element' => 'име на полето, което съдържа една новина',
'getfield' => 'име на полето, което искаш да ти се праща');
##### НЕ Е НУЖНО ПОВЕЧЕ РЕДАКТИРАНЕ #####
foreach ($rssfeed as $source) {
$i = 0;
$cachefile = $path.'/'.$source['name'].'.cache';
}
$doc = new DOMDocument();
$doc->load($source['address']);
foreach ($doc->getElementsByTagName($source['element']) as $node) {
$content = $node->getElementsByTagName($source['getfield'])->item(0)->nodeValue;
if ($content == $lastentry) {
break;
} else {
if (!$i) {
$newlastentry = $contentstrip;
}
$spos = strpos($convert, '<div id="translit" dir="ltr" style="text-align:left">') + strlen('<div id="translit" dir="ltr" style="text-align:left">');
$epos = strpos($convert, '</div>', $spos);
$contentconv = substr($convert, $spos, $epos - $spos);
$maxlength = 145 - strlen($smsfrom.$source['name'].$delimiter);
$contentcut = substr($contentclear, 0, $maxlength);
system('echo "'.$source['name'].$delimiter.$contentcut.'" | mail -a "From: '.$smsfrom.'" '.$smsto);
$i++;
}
}
if ($newlastentry) {
$cache = fopen($cachefile, 'w');
fwrite($cache, $newlastentry);
}
}
?>
Понеже не ми се изписва конвертор на кирилица към латиница, в скрипта ползвам този на Google. За пращането на sms-а ползвам bash командата, тъй като не знам да има начин за махане на Subject полето при php функцията mail(), а това ще харчи символи. Задаването на From хедъра може и да не става точно така при теб (зависи какво MTA ползваш), така че изпробвай bash командата самостоятелно, за да се увериш, че работи, а ако не работи, да я напаснем за твоите нужди. Всеки feed си го слагаш в нов ред $rssfeed[номер]. Относно елементите 'element' и 'getfield' в масива $rssfeed, ето един пример от rss-а на Дарик:
GeSHi (XML):
<rss version="2.0">
<channel>
<title>DarikNews.bg: света и България</title>
<link>http://dariknews.bg/</link>
<description>DARIK News - актуалните новини от света и България</description>
<language>bg</language>
<copyright>2005-2010 DarikNews</copyright>
<image>
<title>DarikNews.bg</title>
<link>http://dariknews.bg/</link>
<url>http://dariknews.bg/images/logo.gif</url>
</image>
<item>
<title>Сърбия отменя визите за турските граждани</title>
<link>http://dariknews.bg/view_article.php?article_id=558566</link>
<guid>http://dariknews.bg/view_article.php?article_id=558566</guid>
<category>Свят</category>
<pubDate>Sun, 11 Jul 2010 16:19:13 +0300</pubDate>
<description><img src="http://dariknews.bg/uploads/news_images/201007/photo_medium_558566.jpg" width="108" border="0" hspace="10" alt="" align="left">Сърбия реши да отмени визовия режим за турските граждани, съобщи говорител на правителството.
"Правителството взе решение да въведе безвизов режим за притежателите на турски паспорт", заяви говорителят Миливое Михайлович.
Очаква се решението да влезе в сила още утре. Сръбските граждани все още се нуждаят от визи, за да пътуват до Турция. Те могат да се снабдяват с тях на пропускателните пунктове. Безвозивият режим се въвежда преди посещението в Белград на турския премиер Реджеп Тайип Ердоган утре, пише БГНЕС. Очаква се той да се срещне със сръб...</description>
</item>
<item>
<title>Словения победи с 5:0 България</title>
<link>http://dariknews.bg/view_article.php?article_id=558567</link>
<guid>http://dariknews.bg/view_article.php?article_id=558567</guid>
<category>Спорт</category>
<pubDate>Sun, 11 Jul 2010 16:17:03 +0300</pubDate>
<description><img src="http://dariknews.bg/uploads/news_images/201007/photo_medium_558567.jpg" width="108" border="0" hspace="10" alt="" align="left">Словения победи с 5:0 България в двубоя от втора група на Евро-африканската зона.
Днес номер 500 в световната ранглиста Блаж Рола се наложи с 6:0, 6:2 над Валентин Димов, а втората ракета на домакините Блаж Кавчич победи с 6:2, 6:1 рекордьора по брой победи на националния ни отбор в мачовете от купа Дейвис Тодор Енев.
След успеха Словения се класира за третия кръг, а България запазва мястото си във втора група на турнира.
...</description>
</item>
</channel>
</rss>
В този случай, за елемента 'element' трябва да се въведе 'item', понеже той съдържа една цялостна новина с всичките й данни (име, линк, описание, дата...), а за елемента 'getfield' трябва да се въведе 'description', ако искаш да ти праща sms с текста на новината, тъй като това поле го съдържа.
Сядаш да прегледаш всеки feed поотделно, за да извлечеш нужната информация, която ти трябва за всеки $rssfeed масив, въвеждаш ги и си готов
P.S.: Оказва се, че PHP полето тук заменя знака '&' с '&', така че ще се наложи като копираш скрипта от тук, да промениш следните неща на реда за променливата $contentclear:
'&#774;' да стане '̆'
'&#365;' да стане 'ŭ'
edit 0: Понеже ще пускаш скрипта в crontab, добавих и пълен път към папката, в която се намира скриптът, тъй като ще ти е нужен. Тъй като при файла на скрипта се създават и допълнителни файлове, които пазят информацията за последните записи във feed-овете, хубаво е да сложиш скрипта в отделна папка, за да не ти се мешат файловете.
edit 1: Още малко доизкусуряване
edit 2: Добавих ти в sms-а пред текста да изписва името на feed-а, което си въвел в полето 'name' за $rssfeed. Слагай имената на латиница (по това име се създава и файлът, който пази последната новина) и гледай да са кратки, за да не си харчиш символи.