Türkiye'nin En Eski Webmaster Forumu İyinet'e Hoşgeldiniz!

Php ile çekilen verilerde türkçe karakter problemi?

atay

0
Onaylı Üye
Üye
Katılım
29 Ekim 2005
Mesajlar
3,592
Açılan Konu
298
Tepki puanı
36
php ile rss çekmeyi ilk defa kullanıyorum. sitenin ufak bir bölümü olduğu için hızlıca geçmek amacıyla hazır bir script kullandım fakat türkçe karakterler bozuk çıkıyor. ne gibi bir değişiklik yapmalıyım fikri olan var mı?

PHP:
<?
				set_time_limit(0);

$file = "http://www.sinemalar.com/feed/salon.php?salon=460";

$rss_channel = array();
$currently_writing = "";

$main = "";

$item_counter = 0;

function startElement($parser, $name, $attrs) {

global $rss_channel, $currently_writing, $main;

switch($name) {

case "RSS":

case "RDF:RDF":

case "ITEMS":

$currently_writing = "";

break;

case "CHANNEL":

$main = "CHANNEL";

break;

case "IMAGE":

$main = "IMAGE";

$rss_channel["IMAGE"] = array();

break;

case "ITEM":

$main = "ITEMS";

break;

default:

$currently_writing = $name;

break;

}

}

function endElement($parser, $name) {

global $rss_channel, $currently_writing, $item_counter;

$currently_writing = "";

if ($name == "ITEM") {

$item_counter++;

}

}

function characterData($parser, $data) {

global $rss_channel, $currently_writing, $main, $item_counter;

if ($currently_writing != "") {

switch($main) {

case "CHANNEL":

if (isset($rss_channel[$currently_writing])) {

$rss_channel[$currently_writing] .= $data;

} else {

$rss_channel[$currently_writing] = $data;

}

break;

case "IMAGE":

if (isset($rss_channel[$main][$currently_writing])) {

$rss_channel[$main][$currently_writing] .= $data;

} else {

$rss_channel[$main][$currently_writing] = $data;

}

break;

case "ITEMS":

if (isset($rss_channel[$main][$item_counter][$currently_writing])) {

$rss_channel[$main][$item_counter][$currently_writing] .= $data;

} else {

//print ("rss_channel[$main][$item_counter][$currently_writing] = $data<br>");

$rss_channel[$main][$item_counter][$currently_writing] = $data;

}

break;

}

}

}

$xml_parser = xml_parser_create();

xml_set_element_handler($xml_parser, "startElement", "endElement");

xml_set_character_data_handler($xml_parser, "characterData");

if (!($fp = fopen($file, "r"))) {

die("could not open XML input");

}

while ($data = fread($fp, 4096)) {

if (!xml_parse($xml_parser, $data, feof($fp))) {

die(sprintf("XML error: %s at line %d",

xml_error_string(xml_get_error_code($xml_parser)),  

xml_get_current_line_number($xml_parser)));

}

}

xml_parser_free($xml_parser);

// output as HTML

if (isset($rss_channel["IMAGE"])) {

print ("");

} else {

print ("");

}

print ("");

if (isset($rss_channel["ITEMS"])) {

if (count($rss_channel["ITEMS"]) > 0) {

for($i = 0;$i < count($rss_channel["ITEMS"]);$i++) {

$yazilacak= ("\n<table width=\"100%\" border=\"1\"><tr><td width=\"100%\"><a href=\"" . $rss_channel["ITEMS"][$i]["LINK"] . "\" target=\"_blank\"><h3>" . $rss_channel["ITEMS"][$i]["TITLE"] . "</h2></a></b>");

$yazilacak.= ("<i>" . html_entity_decode($rss_channel["ITEMS"][$i]["DESCRIPTION"]) . "</i>");

$yazilacak.= ("</td></tr></table><br>");

$yazilacak = ereg_replace('src="', 'src="http://www.sinemalar.com/',$yazilacak);

echo $yazilacak;

}

} else {

print ("<b>There are no articles in this feed.</b>");

}

}
?>
 

sonsuzhost

0
Onaylı Üye
Üye
Katılım
28 Şubat 2006
Mesajlar
1,287
Açılan Konu
112
Tepki puanı
1
Konum
burdan yak
Bu kodlarının olduğu sayfanın en başına charset tagi kullan ve charseti utf8 yap:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 

OnurSQL

0
Onaylı Üye
Üye
Katılım
29 Mart 2005
Mesajlar
2,025
Açılan Konu
84
Tepki puanı
1
Konum
ankara
http://simplepie.org/downloads/

Simplepie sınıfını tavsiye ederim. Ben kullanıyorum, karakter problemi ile karşılaşmadım.

http://simplepie.org/wiki/

Örnek

PHP:
<?php
	set_time_limit(0);
	/*
	require_once 'veritabani/ez_sql_core.php';
	require_once 'veritabani/ez_sql_mysql.php';
	*/
	baglan(); // veritabani bağlantısı
    require_once 'simplepie.php';
    $feed = new SimplePie();
	$al = $db->get_results("SELECT rssurl, kat_id, id FROM rssadresleri WHERE durum=1"); // rss adresleri
	foreach($al as $cek) {		
    $feed->set_feed_url($cek->rssurl);
    $feed->init();
    $feed->handle_content_type();
    $limit = $feed->get_item_quantity(100); // Toplam çekilecek rss çıktısı
	
	for($i=0; $i<$limit; ++$i)
	{

        $item = $feed->get_item($i);
        $y = $db->get_var("SELECT COUNT(adres) FROM icerik WHERE adres='".$item->get_permalink()."'");
		if($y == 0) {
		$db->query("INSERT INTO icerik 
					(id, baslik, baslikseo, aciklama, adres, zaman, rss_id, kat_id)
					 VALUES
					 (lisanssız, 
					 '".mysql_real_escape_string($item->get_title())."',
					 '".mysql_real_escape_string(turkce($item->get_title()))."',
					 '".mysql_real_escape_string(strip_tags($item->get_description()))."',
					 '".mysql_real_escape_string($item->get_permalink())."',
					 now(),
					 '".$cek->id."',
					 '".$cek->kat_id."'
					 )");
					sleep(1);
					 }

				   }
	}
?>
 
Üst