Zoque.Forum
Dirsek Teması:
Geri Dön Zoque.Forum » Webmaster Kaynaklari » Sunucu Tabanlı Programlama (Server Side) » encodingleri farklı 2 rss ile ajax sorunu


Sunucu Tabanlı Programlama (Server Side) Perl/CGI, PHP, ASP, JSP, .NET ve diğer programlama dilleri hakkındaki sorularınıza, paylaşmak istediklerinize ve örnek kodlara bu alanda yer verebilirsiniz.

Yanıt
 
LinkBack Seçenekler
Old 16.10.2006   #1 (permalink)
 
emremer's Avatar
 
Üyelik Tarihi: 02.11.2001
Yer: Viyana, İstanbul
Yaş: 31
Mesaj: 1,019
encodingleri farklı 2 rss ile ajax sorunu


Şöyle bir sayfam var, Hürriyet linkine tıklayınca; Haberler div i içine Hürriyetin RSS ini parse ediyor benzer şekilde Radikal e tıklayınca radikalin haber başlıkları geliyor

Herşey güzel ancak RSS lerdeki encoding farkı dolayısı ile utf-8 yapınca radikal, iso-8859-9 yapınca da hürriyet görüntülenmiyor.

Bazı yerlerde değişiklik yapıncada ikisi de görünüyor ancak ikisi de hatalı (şu andaki hali) da olsa ikisi de sonuç döndürmeye başladı.

Öyle çok fazla kodla aram olmadığı için str_replace ile hatalı türkçe karekterleri düzeltmeye çalıştım ancak sorunu aşamadım.
Anladığım kadarı ile henüz bu aşamaya gelmeden .js de düzenleme gerekli sanırım ama ne?


PHP Code:
<a href="JavaScript:update('hur1','haberler');">Hürriyet</a>

<
a href="JavaScript:update('rdk1','haberler');">Radikal</a>

<
form name="hur1" id="hur1" method="post" action="">
<
input name="url" type="hidden" id="url" value="http://RSS.hurriyet.com.tr/RSS.aspx?sectionId=2">
</
form>

<
form name="rdk1" id="rdk1" method="post" action="">
<
input name="url" type="hidden" id="url" value="http://www.radikal.com.tr/radikal.XML">
</
form>

<
div id="haberler">bilgiler buraya gelecek</div
update fonksiyonunun yer aldığı ajax.js
PHP Code:
// ajax / XMLHTTPRequest uygulaması
// ceviz.net

var http_request false;

function 
update(formid,divid){
// document.getElementById(divid).innerHTML="işleminiz yapılıyor,Lütfen bekleyin..";
var form    document.getElementById(formid);
var 
http_request false;

      
http_request false;
      if (
window.XMLHttpRequest) {
         
http_request = new XMLHttpRequest();
         if (
http_request.overrideMimeType) {
            
http_request.overrideMimeType('text/XML; charset=iso-8859-9');
         }
      } else if (
window.ActiveXObject) {
         try {
            
http_request = new ActiveXObject("Msxml2.XMLHTTP");
         } catch (
e) {
            try {
               
http_request = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (
e) {}
         }
      }
      if (!
http_request) {
         
alert('Cannot create XMLHTTP instance');
         return 
false;
      }
      
http_request.onreadystatechange alertContents;
      
http_request.open('POST'"haberler.PHP"true);
      
http_request.setRequestHeader("Content-type""application/x-www-form-urlencoded");
      
http_request.setRequestHeader("Connection""close");
      
http_request.send(createQuery(form));
      
   

   function 
alertContents() {
      if (
http_request.readyState == 4) {
      if (
http_request.status == 200) {
       
document.getElementById(divid).innerHTML=http_request.responseText;


      
        
           }else { 
alert('Hata Oluştu, Tekrar Deneyin...');}
         
        } 
      }

}

function 
createQuery(form)
{
    var 
elements form.elements;
    var 
pairs = new Array();

    for (var 
0elements.lengthi++) {

        if ((
name elements[i].name) && (value elements[i].value))
            
pairs.push(name "=" encodeURIComponent(value));
    }
    
//pairs.push("param1=1");
    
return pairs.join("&");



ajax.js de iletişime geçilen haberler.PHP
PHP Code:
<?PHP
// RSSlib @ 2RSS.com :: RSS directory, RSS scripts, RSS articles, RSS software
// This scripts are distributed for free and are provided "AS IS". Read docs.htm
// Copyright: Ovi Crisan @ www.2RSS.com


// parameters used for caching


$use_cache=false;
$cache_folder="tmp";
$cache_valid=3600;     // minutes
$display_channel_name=false;        // set to false to hide channel name & link

$channel[]=array("","","","","","");


// ***********************************************************

/********** Türkçeleştirme *********/
function tr ($text) {
           
$tr_yanlis = array (
'Ç','ç','Ğ','ğ','İ','ı','Ö','ö','Ş','ş','Ü','ü',
'Ç','ç','Ğ','ğ','İ','ı','Ö','ö','Ş','ş','Ü','ü',
'Ç','ç','Ğ','ğ','İ','ı','Ö','ö','Ş','ş','Ü','ü',
'&amp;Ccedil;','&amp;ccedil','&Ouml;','&ouml;','&Uuml;','&uuml;',
'&ETH;','&eth;','&Yacute;','&yacute;','&THORN;','&thorn;',
'&ETH;','&eth;','&Yacute;','&yacute;','&THORN;','&thorn;');
//"'", '"'



$tr_dogru = array  (
'Ç','ç','Ğ','ğ','İ','ı','Ö','ö','Ş','ş','Ü','ü',
'Ç','ç','Ğ','ğ','İ','ı','Ö','ö','Ş','ş','Ü','ü',
'Ç','ç','Ğ','ğ','İ','ı','Ö','ö','Ş','ş','Ü','ü',
'Ç','ç','Ö','ö','Ü','ü',
'Ğ','ğ','İ','ı','Ş','ş',
'Ğ','ğ','İ','ı','Ş','ş');
//'&apos;','&quot;'


$text str_replace($tr_yanlis$tr_dogru$text); 
           return 
$text ; }

/********************/
       

function getrss($url) {
global 
$channel,$items,$src;
global 
$use_cache,$cache_folder,$cache_valid;

if(
$use_cache) {
        
$cache_filename=$cache_folder."/RSS-".$src."-".round (mktime()/43200).".HTML";
            if(
file_exists($cache_filename)) {
                
$t=filemtime($cache_filename);
                
$cache_create=((!$t)||($t round (mktime()/43200)-60*$cache_valid)); }
            else
        
$cache_create=true;
    
    if(
$cache_create) {
        
//cache not valid - create it again
        
$simple tr(file($url));
        
$f=fopen($cache_filename,"w");
        for(
$i=0;$i<count($simple);$i++)
            
fwrite($f,$simple[$i]);
        
fclose($f);
        
$simple=implode('',$simple);
        }
    else
        
$simple implode('',tr(file($cache_filename)));
}

else

$simple implode('',tr(file($url)));

$p xml_parser_create($encoding);
//türkçe encoding
xml_parser_set_option($pXML_OPTION_TARGET_ENCODING"utf-8");
xml_parse_into_struct($p,$simple,$vals,$index);
xml_parser_free($p);
$type=0;
$tmp[]=array("","","");
$id=0;
for(
$i=0;$i<count($vals);$i++) {

    if((
$vals[$i]['tag']=="CHANNEL")&&($vals[$i]['type']=="open")) $id=$vals[$i]['level']+1;
    if((
$type==0)&&($id==$vals[$i]['level']))
        switch(
$vals[$i]['tag']) {
        case 
"TITLE"$channel[0]=$vals[$i]['value']; break;
        case 
"LINK"$channel[1]=$vals[$i]['value']; break;
        case 
"DESCRIPTION":
        case 
"CONTENT:ENCODED"$channel[2]=$vals[$i]['value']; break;
        case 
"COPYRIGHT":
        case 
"DC:RIGHTS"$channel[3]=$vals[$i]['value']; break;
        case 
"MANAGINGEDITOR":
        case 
"DC:PUBLISHER"$channel[4]=$vals[$i]['value']; break;
        case 
"PUBDATE":
        case 
"DC:DATE"$channel[5]=$vals[$i]['value']; break;
        }

    else switch(
$vals[$i]['tag']) {
        case 
"TITLE"$tmp[0]=$vals[$i]['value']; break;
        case 
"LINK"$tmp[1]=$vals[$i]['value']; break;
        case 
"DESCRIPTION":
        case 
"CONTENT:ENCODED"$tmp[2]=$vals[$i]['value']; break;
        }

    if(
$vals[$i]['tag']=="ITEM") {
        if((
$vals[$i]['type']=="open")&&($type==0)) $type=1;
        if(
$vals[$i]['type']=="close") {
            
$items[]=$tmp;
            
$tmp[0]="";
            
$tmp[1]="";
            
$tmp[2]="";
        }
    }

}

echo 
'<span class="baslik">'.($channel[0]).'</span><br>';

// end function getrss ***********************

 
 
 
// ********************************************
function rss2html($url,$m=0) {
global 
$channel,$items,$display_channel_name,$title;

getrss($url);

if(
$m==0$m=count($items);
for(
$i=0;$i<$m;$i++) {



///sayfaya da göster
    
print '<h2><a href="' .$items[$i][0]. '" class="item">'
    print 
$items[$i][0]; 
    print 
'</a></h2>';
    
    if(
$items[$i][2]) {
        print 
'<p>';
        print 
$items[$i][2]; $title=$items[$i][2];
        print 
'</p>'
            }
    
                    } 
//itemler sonu


if($channel[5]) print "<div class='copyright'>{$channel[5]}</div>\n";
if(
$channel[3]) print "<div class='copyright'>{$channel[3]}</div>\n";
print 
"<div class='copyright'>Powered by <a href='http://www.2RSS.com' target='_blank' class='copyright'>RSSlib</a></div><br>\n";


//end function rss2html *************************************
    



// RSSlib @ 2RSS.com :: RSS directory, RSS scripts, RSS articles, RSS software
// This scripts are distributed for free and are provided "AS IS". Read docs.htm
// Copyright: Ovi Crisan @ www.2RSS.com

error_reporting(0);

$url=$_POST['url'];


if(!
$url
    print 
"Error: URL missing!";
else {
    
$m=$_GET['rss_items'];
    if(!
$m$m=0;
    
$ch=$_GET['rss_chars'];
    if(!
$ch$ch=0;
    
rss2html($url,$m,$ch,$t);
     }


?>
emremer şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Old 16.10.2006   #2 (permalink)
 
komplike's Avatar
 
Üyelik Tarihi: 17.04.2003
Yer: İstanbul
Yaş: 24
Mesaj: 190
Re: encodingleri farklı 2 rss ile ajax sorunu

http://mikolajj.republika.pl/files/C...arset_v1.0.zip

Değişik charset'leri birbirine dönüştürmeye yarayan bir PHP class bu. İşine yarayacaktır muhtemelen.
__________________
...
Some will win, some will lose
Some were born to sing the blues
...
komplike şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Sponsorlu Bağlantılar
Zoque.Forum
Reklam
Yanıt

Etiketler

sorunu , ajax , rss , farkli , encodingleri



 
Zoque'a hoşgeldiniz!
Zoque 27.02.1999 tarihinde yayın hayatına başlamış, paylaşıma dayalı bir oluşumdur. Tasarım, teknoloji, web, kültür ve sanat ana başlıkları altında bilgi paylaşımı ve benzer değerlere sahip katılımcıların birbirleriyle iletişime girmelerine imkan sağlar. "Az ama Öz" sloganından yola çıkarak, kaliteli ve nitelikli katılımı temel alır.

Saygın ve ciddi bir ortamda yardımlaşmak, haberleşmek, kendi bildiklerini diğer katılımcılarla paylaşmak isteyen, oluşumumuza düzenli katılımda bulunacağı inancını taşıyan konuklarımızı üye olmaya davet ediyoruz. [ » ]


Üye Girişi:

UslanmaM baktabul.com TEKplatform TEKplatform

En popüler ilk 100 etiket
Tag Cloud
acil adsl ajax almak arama araniyor ariyorum ariyoruz asp bilen bilgi bilgisayar blog calisma canon css dijital div domain dosya eleman film firefox flash font form forum fotograf freelance google gore grafik grafiker hakkinda hangi hata hatasi hosting html ilgili ilk image internet istanbul istiyorum java javascript karakter kayit kisisel kullanimi link logo mac mail menu muzik mysql nasil neden nedir online photoshop php problemi program programi reklam resim satilik sayfa script server ses sistemi site sitesi son soru sorun sorunsali sorunu sql swf tasarim tasarimci tasarimcisi tasarimi turk turkce veri video web windows wordpress xml yardim yazi yeni zoque
Zoque RSS Aboneliği
Son eklenen konuları e-posta ile haber verelim mi?

Forum Yazılımı: vBulletin® Version 3.7.3 Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

Arayüz/Skin "Güneş" © www.zoque.com / net. Copyright © 1999 - 2008
Forum Saati GMT +2. Şu anda saat: 15:46.