No dzisiaj dopracowalem troche skrypt :
Struktura tabeli w bazie ( u mnie nazwa bazy to newsy_rss ) :
CREATE TABLE `newsy` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`txt` text NOT NULL,
PRIMARY KEY (`id`)
) TYPE=MyISAM AUTO_INCREMENT=0;
Plik rss.php :
<?php
/*
+-------------------------------------------------------
| Zlodziej newsow
+-------------------------------------------------------
| version: 1.1
+-------------------------------------------------------
| author: nightstalker / www.php.xfree.pl
+-------------------------------------------------------
*/
class system { // przekleilem sobie z mojego cms'a - lenistwo 
function db_connect ( $host, $user, $pass ) {
} else {
die ('<p>Nie można połaczyć się z bazą danych poniweaż<b>' . mysql_error() .'</b></p>');
}
}
function db_select ( $database ) {
die ('<p>Nie można wybrać bazy danych ponieważ:<b>' . mysql_error() . '</b></p>');
}
}
}
system::db_connect ('localhost','root','krasnal'); // wiadomo co system::db_select( 'newsy_rss' ); // nazwa bazy danych
$akcja=$_GET['akcja'];
switch($akcja) {
case 'czytaj':
{
$readFile = file_get_contents( 'http://wiadomosci.onet.pl/2,kategoria.rss' ); // sciagamy zawartosc kanalu
$preg = "#<guid isPermaLink=\"false\">(.*?)</guid>#is"; // definiujemy wyrazenie regularne dla linku do strony z newsem
foreach ( $out[ 1 ] as $w ) // przejscie petli po wszsytkich linkach
{
/*
* Teraz definiujemy wyrazenie regularne dla newsa, to najtrudniejsza czesc,
* bo na roznych stronach roznie sie newsy zapisuje...
* Najlepiej jak strona jest w 100% zgodna z xhtml, bo wtedy latwo zdefiniowac wyrazenie i wszystko odczytac
*/
$preg = "#<DIV class=a2b style=\"margin-bottom:10px\">(.*?)<BR class=a2 clear=all>#is"; // to bedzie dzialac tylko na onecie
// teraz wypada wyczyscic tresc newsa z znakow ktore maga zepsuc zapytanie sql
$news = $out[0][0];
// banalne zapytanie ktore zapobiega zapisywaniu tych samych newsow
$zapytanie = "SELECT * FROM newsy WHERE txt='$news'";
print '<p>W bazie jest juz taki news.. pomijam...</p>'; // jak news juz jest to nie zapisujemy go drugi raz... } else {
// jak go jeszcze nie ma to zapisujemy
$zapytanie = "INSERT INTO newsy VALUES (0, '$news')";
print '<p>Tresc newsa zostala zapisana do bazy...</p>'; // to sie wyswietli jak wszystko bedzie ok
} else {
print "<p>Nie mozna zapisac newsa do bazy ponieważ:<b>" . mysql_error() . "</b></p>"; // a to jak ni ebedize ok :)
}
}
}
print '<p><a href="'.$_SERVER['PHP_SELF'].'?akcja=pokaz">Pokaz newsy</a></p>';
break;
}
case 'pokaz':
{
// tu chyba nie trzeba nic opisywac... wypisujemy wszystko z tabeli newsy
$zapytanie = "SELECT * FROM newsy ORDER BY id ASC";
print '<p>'.$news['txt'].'</p>';
}
} else {
print '<p>Nie mozna odczytac informacji o komentarzach ponieważ:<b>' .mysql_error() . '</b></p>';
}
break;
}
default:
print '<p><a href="'.$_SERVER['PHP_SELF'].'?akcja=czytaj">Odczytaj newsy z onetu i zapisz do bazy</a></p>'; print '<p><a href="'.$_SERVER['PHP_SELF'].'?akcja=pokaz">Pokaz newsy z bazy</a></p>';
}
?>
Najgorsze jest to ze na niektorych stronach jest straszny balagan i ciężko wyciąć treść newsa z kodu... najlepiej jak strona będzie w czystym xhtml to wtedy odczytamy wszystko, tresc, tytul, autora - bez problemów

No ale w związku z tym ze większość ludzi olewa standardy ( tak jak i ja do niedawna, o czym swiadczy moja nie zaktualizowana do xhtml strona domowa

) jest jak jest i trzeba się męczyć... No mam nadzieje że komus sie przyda to co napisałem... Jeszcze raz dzięki dla Strife'a, bo mi duzo wyjasnil