• 20-10-2009, 15:09:37
    #1
    Merhaba,
    Siteme sql dan veri çekerek sitemap oluşturmaya çalışıyorum,
    İstediklerimden bazılarını yaptım yalnız tr karakter hatası alıyorum.
    sitemap.php içeriği ;
    <?
    print_r('<?xml version="1.0" encoding="UTF-8"?>
    <urlset
      xmlns="http://www.google.com/schemas/sitemap/0.84"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.google.com/schemas/sitemap/0.84
                          http://www.google.com/schemas/sitemap/0.84/sitemap.xsd">');
    					  include 'db.php';
    					  ?>
    <url>
    <loc><?=$site?></loc>
    <changefreq>daily</changefreq>
    </url>
    <?
    $say=mysql_query("select * from tag");
    $saydim=mysql_num_rows($say);
    $count = $saydim;
    $perpage = 500;
    $page = !empty($_GET["page"]) ? intval($_GET["page"]) : 1;
    $s = ($page-1)*$perpage; 
    	$cek=mysql_query("SELECT * FROM tag order by tr ASC LIMIT $s,$perpage");
    		while($veri=mysql_fetch_array($cek))
    		{
    $idd=$veri['tr']; 
    		?>
    <url>
    <loc><?=$site?>/<?=$idd?>.htm</loc>
    <changefreq>daily</changefreq>
    </url>
    <?
    echo "\n";
    }
    ?>
    </urlset>
    tr hatası alıyorum sitemapta aldığım hata ise ;
    XML sayfası görüntülenemiyor 
    XML girişi XSL stil sayfası kullanılarak görüntülenemez. Lütfen hatayı düzeltin ve Yinele düğmesini tıklatın veya daha sonra yeniden deneyin. 
    --------------------------------------------------------------------------------
    Metin içeriğinde geçersiz karakter bulundu. 'http://www.siteismi.com/etima.php' kaynağı işlenirken hata oluştu. Satır 21...
    bilgili arkadaşların yardımlarını bekliyorum.
    teşekkür ederim.
  • 20-10-2009, 15:16:03
    #2
    Üyeliği durduruldu
    oluşan xml de 21 inci satirdaki metin nedir & gibi işaretlerin geçmemesi gerekiyordu.
  • 20-10-2009, 15:18:38
    #3
    sdemirkeser adlı üyeden alıntı: mesajı görüntüle
    oluşan xml de 21 inci satirdaki metin nedir & gibi işaretlerin geçmemesi gerekiyordu.

    & işaretinin geçmediğini biliyorum :S ama bu & sembol varsa bile replace ile nasıl değiştirebilirim acaba ?
  • 20-10-2009, 15:22:41
    #4
    Üyeliği durduruldu
    RuHeLa adlı üyeden alıntı: mesajı görüntüle
    & işaretinin geçmediğini biliyorum :S ama bu & sembol varsa bile replace ile nasıl değiştirebilirim acaba ?
    htmlspecialchars yapmaniz yeterli oluyor elle karakter replace etmek için str_replace fonksiyonunu kullanabilirsiniz

    yanliz burdaki adresler url ise url encode fonksiyonunuda kullanabilirsiniz

    sizin örnek hata aldiginiz satiri yazmaniz tam yorum yapabilmek için daha iyi olur sanirim
  • 20-10-2009, 15:28:29
    #5
    mysqlden veri cektiğim için hata satırı sürekli kayıyor hocam,

    isterseniz pm den bilgileri göndereyim yardımcı olursanız makbule geçer hocam.
  • 20-10-2009, 17:17:13
    #6
    $idd=$veri['tr']; kısmını
    $idd=htmlspecialchars($veri['tr']);

    yaparsan sorunun büyük ihtimal çözülür

    eğer çözülmzse birde

    $idd=strip_tags(htmlspecialchars($veri['tr']));

    şeklinde dene
  • 20-10-2009, 19:11:15
    #7
    teşekkür ederim sorunu tr tablosundaki hata veren verileri silerek hallettim.
  • 21-10-2009, 02:10:56
    #8
    RuHeLa adlı üyeden alıntı: mesajı görüntüle
    teşekkür ederim sorunu tr tablosundaki hata veren verileri silerek hallettim.
    bu kesin çözüm deildir..Türkçe veriler ekleseniz sorun çıkartir.Size kendi kullandigim sistemi vereyim....
    function EtiketDuzenle($etiket){
        $etiket = ereg_replace("&eth;","g",$etiket);
        $etiket = ereg_replace("ü","u",$etiket);
        $etiket = ereg_replace("&thorn;","s",$etiket);
        $etiket = ereg_replace("ö","o",$etiket);
        $etiket = ereg_replace("ç","c",$etiket);
        $etiket = ereg_replace("&ETH;","G",$etiket);
        $etiket = ereg_replace("Ü","U",$etiket);
        $etiket = ereg_replace("&THORN;","S",$etiket);
        $etiket = ereg_replace("Ö","O",$etiket);
        $etiket = ereg_replace("Ç","C",$etiket);
        $etiket = ereg_replace("&yacute;","i",$etiket);
        $etiket = ereg_replace("&Yacute;","I",$etiket);
        $etiket = ereg_replace("[^a-zA-Z0-9]","-",$etiket);
        return $etiket;
    }
    bunu seo.php diye kaydedin.
    Sitemap dosyasinin en üstüne
    include "seo.php";
    yazin ve
    $idd=$veri['tr'];
    bunu
    $idd=EtiketDuzenle($veri['tr']);
    şeklinde yapın sorunu kökten çözersiniz. bu yöntem sitemapta tr karakter sorunu yaşayanlara kesin çözüm olarak yapilir.Herkes kullanabilir...belki birilerininde işine yarar.
    Kolay gelsin...