İyinet'e Hoşgeldiniz!

Türkiye'nin En Eski Webmaster Forum'una Hemen Kayıt Olun!

Kayıt Ol!

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

atay

0
İyinet Üyesi
Katılım
29 Ekim 2005
Mesajlar
3,592
Reaction score
37
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
İyinet Üyesi
Katılım
28 Şubat 2006
Mesajlar
1,287
Reaction score
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
İyinet Üyesi
Katılım
29 Mart 2005
Mesajlar
2,025
Reaction score
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);
					 }

				   }
	}
?>
 

Türkiye’nin ilk webmaster forum sitesi iyinet.com'da forum üyeleri tarafından yapılan tüm paylaşımlardan; Türk Ceza Kanunu’nun 20. Maddesinin, 5651 Sayılı Kanununun 4. maddesinin 2. fıkrasına göre, paylaşım yapan üyeler sorumludur.

Üst