• 27 odgovora
  • 7.222 pregleda
Nekoliko pitanja u vezi RSS-a 28.10.2007. u 01:04 · pre 231 meseci #1
Dobar dan radni narode :),

pisem neku skriptu za povlačenje vesti sa drugih sajtova, pa sam naleteo na par problema.
Naime, kada svučem vesti, ne prikazuju mi se naša slova!
Gledao sam ovde na forumu i koliko sam skontao, postupak za otklanjanje ovog problema je, da prvo trebam otkriti encoding xml strane, i zatim da sa nekom funkcijom konvertujem encoding.
E sad moje pitanje je kako otkriti encoding?

Ali ovde nije kraj, trebao bi da prebacim vesti u ćirilicu, pa me interesuje jel postoji neka funkcija za to?

I jos jedno pitanje za kraj, jel moguće da se sa RSS povlače cele vesti ili samo kratki opisi, evo konkretno za http://www.blic.co.yu/rssall.php?
Re: Nekoliko pitanja u vezi RSS-a 28.10.2007. u 15:51 · pre 231 meseci #2
ako zelis da otkrijes encoding rss-a, pogledaj source tog rss-a, trebalo bi da pise nesto ovako

<?xml version="1.0" encoding="UTF-8" ?>

ili vec koji god da je encoding. ti si naveo za blic. oni za rss nisu naveli direktan encoding, ali kako im je glavni sajt u utf-8, najverovatnije im je i rss takav.

u svom rss-u daju samo kratke vesti, tako da mozes jedino to preuzeti. a ti bi zeleo da prezuimas cele vesti jelda?
Re: Nekoliko pitanja u vezi RSS-a 28.10.2007. u 19:35 · pre 231 meseci #3
Jel vidis, pa onda ne znam u cemu je problem zasto ne vidim nasa slova ... evo pogledaj i sam :

Code:

<html>
<head>
<meta HTTP-EQUIV="content-type" CONTENT="text/html; charset=UTF-8">
<title>probna skripta RSS</title>

</head>
<body >
<?php 

require_once 'rss_fetch.inc';

$url = 'http://www.blic.co.yu/rssall.php';
$rss = fetch_rss($url);


$izvor = $rss->channel['title'];
$PubDate = $rss->channel['PubDate'];
$Language = $rss->channel['Language'];

echo "Vesti preuzete sa : ",$Language ," - ", $izvor ," - ", $PubDate , "<br>";

        $conn = mysql_connect($dbhost, $dbuser, $dbpass) or die ('Error connecting to mysql');
          
        mysql_select_db($dbname);
        

$items = array_slice($rss->items, 0, 5);


foreach ($items as $item) {
        
        $href = $item[link];
        $title = $item[title];
        $desc = $item[description];
        $image = $item[image];
        $author = $item[author];
        
        
        //$desc = iconv("?????","UTF-8",$desc);
        echo "<li><a href=$href>$title</a> - $image $desc - $author</li>";
        
        $query = "INSERT INTO jos_RSS (izvor, link , description) VALUES ('$izvor', '$href', '$desc')";
        mysql_query($query);
             
        };
        
        mysql_close($conn);
        
        
?>

</body>
</html>


, i da hteo sam cele vesti da preuzmem. Pa jel to znaci da postoje i sajtovi koji pruzaju preuzimanje celih vesti?

Re: Nekoliko pitanja u vezi RSS-a 29.10.2007. u 18:43 · pre 231 meseci #4
ne vidis nasa slova jer se negde usput izgubi encoding... imao sam istih problema... resio sam sledecom funkcijom:

Code:

function sredi_karaktere($string){

    

    $string = str_replace("ć","&#263;",$string); //c kao curka

    $string = str_replace("ÅŸ","&#382;",$string);//z kao zurka

    $string = str_replace("Å¡","&#353;",$string);//s kao suma

    $string = str_replace("Ä","&#269;",$string);//c kao cvarak

    $string = str_replace("â€","\"",$string);

    $string = str_replace("œ","",$string);

    $string = str_replace("Â","",$string);

    $string = str_replace("™","",$string);

    $string = str_replace("\"ž","\"",$string);

    $string = str_replace("€","eur",$string);



    return $string;

    

}


mislim da jedino slovo dj fali... pogledaj kada ispises vesti u source-u dobijenog html fajla pogledaj umesto kog karaktera koji karakter ispisuje i ondak stim karakterima napravi slicnu funkciju...
Re: Nekoliko pitanja u vezi RSS-a 30.10.2007. u 09:01 · pre 231 meseci #5
Problem je sto ja umesto nasih slova vidim znakove pitanja, evo ovako:
Citat:

Povr?ine pod genetski modifikovanim (GM) kulturama u Evropi za 77 odsto su ve?e nego pro?le godine, pokazalo je istra?ivanje koje je ju?e objavio Bi-Bi-Si


i da jel postoje onda sajtovi koji pruzaju preuzimanje celih vesti( daj neki primer ako znas ... ), i koji je naziv za channel element?
Re: Nekoliko pitanja u vezi RSS-a 30.10.2007. u 09:22 · pre 231 meseci #6
u source vidis znakove pitanja? sad lupam, al` probaj sa menjanjem encodinga tvoje strane koja ispisuje vesti. ili eventualno prilikom snimanja tog fajla, skripta, koji ispisuje vesti, da odaberes encoding utf-8.

a inace sa rss mozes preuzeti samo sto je u xml fajlu, znaci jedino ako je cela vest u xmlu onda mozes preuzeti celu vest... ili napisi mejl wembasteru doticnog sajta (recimo blic) i lepo ga pitaj da li mozes nekako preuzeti celu vest...

btw. kako preuzimas rss? vidim imas neki rss_fetch.inc fajl. verujem da on radi posao. samo me interesuje kako si pravio? simplexml_load_file ili si pravio ceo parser?
Re: Nekoliko pitanja u vezi RSS-a 30.10.2007. u 15:16 · pre 231 meseci #7
proveri u php.ini sledecu var:
mysql.connect_charset = utf8

to ti omogucava da ti php kao client upisuje u mysql utf kodifirane char

posle toga naravno proveri koji su charset za xml/rss feed koje preuzimas

imas i ovde malo vise info o (de)kodifikaciji:

http://www.elitesecurity.org/t280813-0#1676973

Potpis
http://www.playnow.rs
Re: Nekoliko pitanja u vezi RSS-a 30.10.2007. u 21:18 · pre 231 meseci #8
rss_fetch.inc je deo magpie projekta koji je inače vrlo dobar rss čitač, pa ne bi trebalo da imaš problema s njim, ja ga koristim i do sada mi je problem pravio samo sa cp1250 enkodingom, UTF8 radi perfektno.

Možda bi pomoglo da ga "apdejtuješ". Zvanično poslednja verzija ima oznaku 0.72, a ja koristim dorađenu verziju koju sam maznuo iz paketa "gregarius" gde je dodata podrška za Atom1.0.

Ako ni to ne pomogne onda će biti da ti fale mbstring ili iconv ekstenzije na serveru.
Potpis
"The quieter you become, the more you are able to hear."
Blog | PowerCMS
Re: Nekoliko pitanja u vezi RSS-a 30.10.2007. u 21:19 · pre 231 meseci #9
... i ako ne upisujem u bazum tj. :

Code:

<html>
<head>
<meta HTTP-EQUIV="content-type" CONTENT="text/html; charset=UTF-8">
<title>probna skripta RSS</title>

</head>
<body >
<?php 

require_once 'rss_fetch.inc';

$url = 'http://www.blic.co.yu/rssall.php';
$rss = fetch_rss($url);


$izvor = $rss->channel['title'];
$PubDate = $rss->channel['PubDate'];
$Language = $rss->channel['Language'];

echo "Vesti preuzete sa : ",$Language ," - ", $izvor ," - ", $PubDate , "<br>";
        

$items = array_slice($rss->items, 0, 5);


foreach ($items as $item) {
        
        $href = $item[link];
        $title = $item[title];
        $desc = $item[description];
        $image = $item[image];
        $author = $item[author];
      
        echo "<li><a href=$href>$title</a> - $image $desc - $author</li>";
        
        };
      
        
?>

</body>
</html>


i dalje se javlja isti problem. Probao sam i sa drugim izvorima i opet nista ... Eto ako hocete probajte vi kod vas pa mi javite kako je kod vas ispalo ....
Re: Nekoliko pitanja u vezi RSS-a 31.10.2007. u 00:13 · pre 231 meseci #10
Isprobao www.blic.co.yu/rssall.php i radi lepo s našim slovima.

Probaj da mu ovako forsiraš ulazni enkoding (isprobaj razne vrednosti):
define('MAGPIE_INPUT_ENCODING', 'ISO-8859-1');

Nadam se da si isključio keširanje (MAGPIE_CACHE_ON) dok ovo isprobavaš jer će ti stalno gledati iz keša a na to neće uticati promena MAGPIE_INPUT_ENCODING-a.
Potpis
"The quieter you become, the more you are able to hear."
Blog | PowerCMS
Re: Nekoliko pitanja u vezi RSS-a 31.10.2007. u 05:26 · pre 231 meseci #11
Evo ga ljudi konacno je proradilo kako treba.

Evo ga i code ako neko naleti na slican problem:

Code:

<html>
<head>
<meta HTTP-EQUIV="content-type" CONTENT="text/html; charset=UTF-8">
<title>probna skripta RSS</title>

</head>
<body >
<?php 

require_once 'rss_fetch.inc';
define('MAGPIE_CACHE_ON', false);
define('MAGPIE_INPUT_ENCODING', 'UTF-8');
define('MAGPIE_OUTPUT_ENCODING', 'UTF-8');

$url = 'http://www.blic.co.yu/rssall.php';
$rss = fetch_rss($url);


$izvor = $rss->channel['title'];

echo "<br/>Vesti preuzete sa : ", $izvor ,"<br><br>";
        

$items = array_slice($rss->items, 0, 5);


foreach ($items as $item) {
        
        $href = $item[link];
        $title = $item[title];
        $desc = $item[description];
      
        echo "<li><a href=$href>$title</a> $desc</li>";
        
        };
      
        
?>

</body>
</html>



Hvala svima i prijatno ...

Re: Nekoliko pitanja u vezi RSS-a 31.10.2007. u 18:07 · pre 231 meseci #13
Vesti ce se svlaciti u bazu, ovde to nije odradjeno, inace ce ici, tako da mislim da ne mora da se ukljucuje kesiranje ... ispravi me ako gresim.

Inace stvar se jos malo zakomplikovala, posto su vesti na latinici a sajt je na cirilici ... i ustvari veliko I vesti se skidaju sa bete a oni u <description> imaju i sliku (a ne posebno). Tako da sam prvo morao da iscupam sliku van description-a pa tek onda strip_tags i lat2cyr ... muka ziva.

Uostalom evo pogledaj te:

Code:

<html>
<head>
<meta HTTP-EQUIV="content-type" CONTENT="text/html; charset=UTF-8">
<title>probna skripta RSS</title>

</head>
<body >
<?php 

function lat2cyr($str) {

    $str = str_replace("dž", "dž", $str);
    $str = str_replace("nj", "nj", $str);
    $str = str_replace("lj", "lj", $str);
    $str = str_replace("a", "a", $str);
    $str = str_replace("b", "b", $str);
    $str = str_replace("v", "v", $str);
    $str = str_replace("g", "g", $str);
    $str = str_replace("d", "d", $str);
    $str = str_replace("đ", "đ", $str);
    $str = str_replace("e", "e", $str);
    $str = str_replace("ž", "ž", $str);
    $str = str_replace("z", "z", $str);
    $str = str_replace("i", "i", $str);
    $str = str_replace("j", "j", $str);
    $str = str_replace("k", "k", $str);
    $str = str_replace("l", "l", $str);
    $str = str_replace("m", "m", $str);
    $str = str_replace("n", "n", $str);
    $str = str_replace("o", "o", $str);
    $str = str_replace("p", "p", $str);
    $str = str_replace("r", "r", $str);
    $str = str_replace("s", "s", $str);
    $str = str_replace("t", "t", $str);
    $str = str_replace("ć", "ć", $str);
    $str = str_replace("u", "u", $str);
    $str = str_replace("f", "f", $str);
    $str = str_replace("h", "h", $str);
    $str = str_replace("c", "c", $str);
    $str = str_replace("č", "č", $str);
    $str = str_replace("š", "š", $str);
    
    $str = str_replace("LJ", "Lj", $str);
    $str = str_replace("NJ", "Nj", $str);
    $str = str_replace("DŽ", "Dž", $str);
    $str = str_replace("A", "A", $str);
    $str = str_replace("B", "B", $str);
    $str = str_replace("V", "V", $str);
    $str = str_replace("G", "G", $str);
    $str = str_replace("D", "D", $str);
    $str = str_replace("Đ", "Đ", $str);
    $str = str_replace("E", "E", $str);
    $str = str_replace("Ž", "Ž", $str);
    $str = str_replace("Z", "Z", $str);
    $str = str_replace("I", "I", $str);
    $str = str_replace("J", "J", $str);
    $str = str_replace("K", "K", $str);
    $str = str_replace("L", "L", $str);
    $str = str_replace("M", "M", $str);
    $str = str_replace("N", "N", $str);
    $str = str_replace("O", "O", $str);
    $str = str_replace("P", "P", $str);
    $str = str_replace("R", "R", $str);
    $str = str_replace("S", "S", $str);
    $str = str_replace("T", "T", $str);
    $str = str_replace("Ć", "Ć", $str);
    $str = str_replace("U", "U", $str);
    $str = str_replace("F", "F", $str);
    $str = str_replace("H", "H", $str);
    $str = str_replace("C", "C", $str);
    $str = str_replace("Č", "Č", $str);
    $str = str_replace("Š", "Š", $str);
    
    
    return $str;

}


require_once 'rss_fetch.inc';
define('MAGPIE_CACHE_ON', false);
define('MAGPIE_INPUT_ENCODING', 'UTF-8');
define('MAGPIE_OUTPUT_ENCODING', 'UTF-8');

$url = 'http://www.beta.co.yu/rssvd.asp';
$rss = fetch_rss($url);


$izvor = $rss->channel['title'];

echo "<br/><strong>Vesti preuzete sa : ", $izvor ,"</strong><br><br>";
        

$items = array_slice($rss->items, 0, 5);


foreach ($items as $item) {
        
        $href = $item[link];
        $title = $item[title];
        $desc = $item[description];
        
        $pattern = '/<img(.+?)[\s]+?src=[\'"](.+?)[\'"].*?>/i';
        if (preg_match($pattern, $desc, $out)) {
            $image = $out[0];    
          }
        else {
            $image = "Ne mogu da pronadjem image tag!";
        } 
  
        $desc = strip_tags($desc);
  
        $title =lat2cyr($title);
        $desc = lat2cyr($desc);
  
        //echo "<li><a href=$href>$title</a> $image - $desc</li>";
        echo "<p><li><strong>$title</strong><br>$image $desc</li></p>";
        
};
      
        
?>

</body>
</html>



jedino mi se nesvidja pattern, moracu jos malo na njemu da radim, ali za prvo vreme je ok.

Ako neko ima neki predlog za pattern ... samo napred.
Re: Nekoliko pitanja u vezi RSS-a 01.11.2007. u 09:08 · pre 231 meseci #14
strip_tags ima dodatnu opciju, allow_tags

strip_tags($text, '<img>');

posto je uglavnom link ka slici a ne sama slika onda to mozes bez problema upisati u bazu. ja sam tako odradio i radi bez problema.
Re: Nekoliko pitanja u vezi RSS-a 01.11.2007. u 16:22 · pre 231 meseci #15
Da, nije mi problem bio upis u bazu, vec mi je problem bio prevod na cirilicu, posto mi je funkcija, normalno, prevodila i html tagove ....


Kad se vec pomenuo upis u bazu, ja sam isto kontao da upisujem samo putnju u bazu a da sliku skladistim na server. Problem mi je sto je dosta toga zabranjeno na hostingu, pa sad pokusavam da odradima sa CURL-om posto je on enable-ovan. Jel si imao neko iskustvo sa tim mozda?

Evo dokle sam stigao:
Code:

$path_to = '/home/web/..../www/temp/image_1.jpg';
$url = 'http://www.......jpg';
            
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$res = curl_exec($ch);
curl_close($ch);
            
            
$file_wnew = fopen($path_to,'wb');
            
while (!feof($res)) {
$chunk_rd = fread($res,1024);
fwrite($file_wnew,$chunk_rd); 
}
            
fclose($file_wnew);
fclose($res);


ali dobijam gresku
Code:

Warning: fopen(/home/web/..../www/temp/image_1.jpg) [function.fopen]: failed to open stream: Permission denied in /home/web/..../blabla.com/www/rss.php on line 207


Re: Nekoliko pitanja u vezi RSS-a 01.11.2007. u 16:45 · pre 231 meseci #16
pa da sad vidim da je i
Code:

allow_url_fopen    Off


zato i dobijam onu gresku ... kako sad to da zaobidjem?


e jbg , jel ima neko ko se susretao sa ovim problemom?
Re: Nekoliko pitanja u vezi RSS-a 01.11.2007. u 20:25 · pre 231 meseci #18
nismo se razumeli, to su oni i zabranili, ja trazim neko rasenje da to zaobidjem ....
Re: Nekoliko pitanja u vezi RSS-a 02.11.2007. u 03:30 · pre 231 meseci #19
http://php.net/filesystem

Citat:

Note: This setting can only be set in php.ini due to security reasons.


dakle, ne mozes :)


mada vidi jel ti curl extenzija instalirana, ona moze da te "spasi" (ili snoopy skripta)
Potpis
rafforum.rs - Forum Računarskog Fakulteta
Re: Nekoliko pitanja u vezi RSS-a 02.11.2007. u 07:42 · pre 231 meseci #20
Code:
    
$tempXMLfile = 'test.xml';
$ch = curl_init();    

curl_setopt($ch, CURLOPT_URL, $url_koji_otvaras);
curl_setopt($ch, CURLOPT_PROXY, CHECKACCESS_PROXY);

$fp = fopen("test.xml", "w");

curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt ($ch, CURLOPT_TIMEOUT, 60);  
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$output = curl_exec($ch);
fclose($fp);
$intReturnCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

$handle = fopen($tempXMLfile, 'w+');

fwrite($handle, $output);

fclose($handle);

// dalje radim sa mojim fajlom test.xml koji je na mom serveru


posto mi je bilo jako hitno trebalo kad mi je trebalo, nisam ulazio u srz curl-a, a i server na kojem sam radio je bio extremno pun zabrana, tako da sam ga skontao ovako da radi:
imam svoj temp fajl (ovo sam koristio za citanje rss-a, zato je xml fajl :)) i u njega upisujem ono sto sam otvorio na remote serveru pomocu curl-a i posle baratam sa tim temp fajlom. samo nakon sto zavrsis sa temp fajlom ne zaboravi da ga ispraznis. hope it helps ;)
Odgovori
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme