• 20-06-2010, 22:11:38
    #1
    video adlarında bulunan "&" karakterinden dolayı videomaplerin bazılarında okuma hatası oluyor.



    hata veren videoyu database den kaldırınca bir sonraki "&" karakteri bulunan videoyu okuyamıyor bu sefer. "&" karakteri bulunan binlerce video var. hepsini silsem düzelicek fakat yeni eklenen videolarda "&" karakteri olunca yine okuma hatası verecek. "&" karakterini hata vermeden okuması için haritada nasıl bir düzenleme yapmam gerekir ? yardımlarınızı bekliyorum.

    videomap aşağıdaki gibidir.
    <?php
    include ("ayar.php");
    header("content-type: text/xml");
    echo '<?xml version="1.0" encoding="UTF-8"?>';
    function SeoLink($s){
    	$tr = array('ş','Ş','ı','İ','ğ','Ğ','ü','Ü','ö','Ö','Ç','ç');
    	$eng = array('s','s','i','i','g','g','u','u','o','o','c','c');
    	$s = str_replace($tr,$eng,$s);
    	$s = strtolower($s);
    	$s = preg_replace('/&.+?;/', '', $s);
    	$s = preg_replace('/[^%a-z0-9 _-]/', '', $s);
    	$s = preg_replace('/\s+/', '-', $s);
    	$s = preg_replace('|-+|', '-', $s);
    	$s = trim($s, '-');
    
    	return $s;
    } 
    $file= mysql_query("select * from settings where id='1'");
    while($al=mysql_fetch_array($file)){
    $priority=$al['mappriority'];
    $changefreq=$al['mapchangefreq'];
    $adres=$al['mapadres'];
    $muzikdurum=$al['muzikdurum'];
    }
    ?>
    
    <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
            xmlns:video="http://www.google.com/schemas/sitemap-video/1.1">
    
    <?php
    if ($muzikdurum=="youtube")
    {
    $sonuc = mysql_query("Select * From videomp3 order by Id DESC LIMIT 110000,10000");
    while($benzer = mysql_fetch_array($sonuc)){
    $videoad = $benzer['videoad'];
    $videoid = $benzer['videoid'];
    $seovideoad=SeoLink($videoad);
    
    echo "<url>
     <loc>$adres/$videoid/$seovideoad-dinle.htm</loc>
     <video:video>
          <video:content_loc>$adres/video/$videoid.flv</video:content_loc>
          <video:thumbnail_loc>http://i.ytimg.com/vi/$videoid/default.jpg</video:thumbnail_loc>
          <video:title>$videoad</video:title>  
          <video:description>$videoad</video:description>
          <video:family_friendly>yes</video:family_friendly>
        </video:video>
    </url>";
    
    }
    
    }
    
    ?>
    </urlset>
  • 20-06-2010, 22:13:12
    #2
    xml de & kullanamazsınız. &amp; şeklinde düzenlemeniz gerekmektedir.
  • 20-06-2010, 22:17:04
    #3
    netster adlı üyeden alıntı: mesajı görüntüle
    xml de & kullanamazsınız. &amp; şeklinde düzenlemeniz gerekmektedir.
    tam olarak nereye eklemem gerekir map de bunu ?
  • 20-06-2010, 23:21:47
    #4
    $s = preg_replace('/&/', '&amp;', $s);

    Bu şekilde olması gerekir.
  • 20-06-2010, 23:31:36
    #5
    netster adlı üyeden alıntı: mesajı görüntüle
    $s = preg_replace('/&/', '&amp;', $s);

    Bu şekilde olması gerekir.
    düzeldi. teşekkürler
  • 20-06-2010, 23:41:23
    #6
    Sorununuzun düzeldiğine sevindim. Bu hata ile bir çok kişi karşılaşıyor aslında bu konu sabitlense çok iyi olur.

    xml site haritanız da veya xml websitenizde kesinlikle & karakteri kullanmamalısınız bunun yanında resim vb kodlara self close uygulamalısınız.

    örn :
    <img src="resmim.jpg" />
  • 20-06-2010, 23:53:46
    #7
    netster adlı üyeden alıntı: mesajı görüntüle
    Sorununuzun düzeldiğine sevindim. Bu hata ile bir çok kişi karşılaşıyor aslında bu konu sabitlense çok iyi olur.

    xml site haritanız da veya xml websitenizde kesinlikle & karakteri kullanmamalısınız bunun yanında resim vb kodlara self close uygulamalısınız.

    örn :
    <img src="resmim.jpg" />
    yukarda verdiğim kod sitemap için hazırlanmıştı aslında. onu editleyerek video map e çevirdim video adlarındaki karakterleri düzenleyecek kod yoktu. sizin verdiğinizi ekledim şu anda hiç bir sorun yok.

    düzenlenmiş çalışır halinin örneği :
    <?php
    include ("ayar.php");
    header("content-type: text/xml");
    echo '<?xml version="1.0" encoding="UTF-8"?>';
    function SeoLink($s){
    	$tr = array('ş','Ş','ı','İ','ğ','Ğ','ü','Ü','ö','Ö','Ç','ç');
    	$eng = array('s','s','i','i','g','g','u','u','o','o','c','c');
    	$s = str_replace($tr,$eng,$s);
    	$s = strtolower($s);
    	$s = preg_replace('/&.+?;/', '', $s);
    	$s = preg_replace('/[^%a-z0-9 _-]/', '', $s);
    	$s = preg_replace('/\s+/', '-', $s);
    	$s = preg_replace('|-+|', '-', $s);
    	$s = trim($s, '-');
    
    	return $s;
    }
    function Videoad($s){
      $s = preg_replace('/&/', '&amp;', $s);  
    
    	return $s;
    }
    
     
    $file= mysql_query("select * from settings where id='1'");
    while($al=mysql_fetch_array($file)){
    $priority=$al['mappriority'];
    $changefreq=$al['mapchangefreq'];
    $adres=$al['mapadres'];
    $muzikdurum=$al['muzikdurum'];
    }
    ?>
    
    <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
            xmlns:video="http://www.google.com/schemas/sitemap-video/1.1">
    
    <?php
    if ($muzikdurum=="youtube")
    {
    $sonuc = mysql_query("Select * From videomp3 order by Id DESC LIMIT 0,10000");
    while($benzer = mysql_fetch_array($sonuc)){
    $videoad = $benzer['videoad'];
    $videoid = $benzer['videoid'];
    $seovideoad=SeoLink($videoad);
    $svideoad=Videoad($videoad);
    echo "<url>
     <loc>$adres/$videoid/$seovideoad-dinle.htm</loc>
     <video:video>
          <video:content_loc>$adres/video/$videoid.flv</video:content_loc>
          <video:thumbnail_loc>http://i.ytimg.com/vi/$videoid/default.jpg</video:thumbnail_loc>
          <video:title>$svideoad</video:title>  
          <video:description>$svideoad</video:description>
          <video:family_friendly>yes</video:family_friendly>
        </video:video>
    </url>";
    
    }
    
    }
    
    ?>
    </urlset>
  • 21-06-2010, 00:00:11
    #8
    &amp; olarak değiştir
  • 21-06-2010, 00:14:30
    #9
    Bu arada kodlarınızı paylaştığınız için teşekkürler. Bir çok webmaster otomatik sitemap oluşturmayı bilmiyor , sizin kodlarınızı kendilerine göre düzenleyerek *otomatik güncellenen* site haritalarına kavuşabilirler.