• 08-01-2009, 17:22:34
    #1
    Selam arkadaşlar,
     <item>
      <title>Çin Yuan Renminbi</title>
      <description>Alış 0.2281 YTL ~ Satış:0.2281 YTL</description>
      <link>http://kur.doviz.com/kur/cin-yuan-renminbi</link>
     </item>
     <item>
      <title>Irak Dinari</title>
      <description>Alış 0.0014 YTL ~ Satış:0.0014 YTL</description>
      <link>http://kur.doviz.com/kur/irak-dinari</link>
     </item>
     <item>
      <title>Rus Rublesi</title>
      <description>Alış 0.0530 YTL ~ Satış:0.0530 YTL</description>
      <link>http://kur.doviz.com/kur/rus-rublesi</link>
     </item>
    Şu şekilde elimde XML var, fakat burdaki kurların satırları değişiyor. Misal rus rublesi 1.satıra geçiyor, ırak dinarı en alt satıra geliyor. Bu XML'de 20 ye yakın döviz kuru var ben içinden sadece dolar ve euroyu çekmek istiyorum. Bunu nasıl yaparım? Hazır xmlden veri çekme kodlarında, hepsini çekiyor. İstediğim satırıda çekebiliyorum ancak yerleri değiştiği için doları çekemiyorum. Yardımcı olursanız sevinirim. Birde XML işini iyi anlatan Türkçe kaynak varmı, yardımlarınız için şimdiden tşk ederim.

    $Veri = array();  
    $kaynak = file_get_contents("doviz.xml");  
    $temp = split("<item>",$kaynak); 
    for ($i=1;$i<=15;$i++){
    if(trim($temp[$i])==''){continue;}  
    preg_match('/<title>(.*)<\/title>/i', $temp[$i], $title);  
    preg_match('/<description>(.*)<\/description>/i', $temp[$i], $desc);  
    preg_match('/<link>(.*)<\/link>/i', $temp[$i], $link);  
    array_push($Veri,array($title[1],$desc[1],$link[1]));  
    } 
    $dolar="<strong>".$Veri[0][0]."</strong> <br/>&nbsp;".$Veri[0][1]."<br/>"; 
    echo $dolar;
  • 08-01-2009, 17:29:58
    #2
    Üyeliği durduruldu
    if kullanabilirsin.
    Misal

    $Veri = array();
    $kaynak = file_get_contents("doviz.xml");
    $temp = split("<item>",$kaynak);
    for (
    $i=1;$i<=15;$i++){
    if(
    trim($temp[$i])==''){continue;}
    preg_match('/<title>(.*)<\/title>/i', $temp[$i], $title);
    preg_match('/<description>(.*)<\/description>/i', $temp[$i], $desc);
    preg_match('/<link>(.*)<\/link>/i', $temp[$i], $link);
    array_push($Veri,array($title[1],$desc[1],$link[1]));
    }
    if($title[1]=="Dolar" or $title[1]=="Euro") {
    $dolar="<strong>".$Veri[0][0]."</strong> <br/>&nbsp;".$Veri[0][1]."<br/>";
    echo
    $dolar;

    }
  • 08-01-2009, 17:51:56
    #3
    Aklıma gelmemişti if, döngüye bağlatıp istediğimi elde ettim

    Çok teşekkür ederim hocam sabahtır beri uğraşıyordum.

    PHP ve XML ile ilgili Türkçe makaleler varmı?
  • 08-01-2009, 17:53:54
    #4
    Üyeliği durduruldu
    xElectron adlı üyeden alıntı: mesajı görüntüle
    Aklıma gelmemişti if döngüye bağlatıp istediğimi elde ettim
    Çok teşekkür ederim hocam sabahtır beri uğraşıyordum.
    PHP ve XML ile ilgili Türkçe makaleler varmı?
    makale degilde video ders hazirlamak lazim aslinda
    PHP: Introduction - Manual
    ile çok basit olarak xml okuma işlemleri yapilabilir
  • 26-05-2009, 18:33:06
    #5
    doviz.com'un xml adresini paylaşabilirmisin? tcmb server bazen yavaşlıyor. sitede sayfa açılma süresinde etkisi oluyor. doviz.com da öyle bir sorun yok bildiğim kadarıyla..
  • 26-05-2009, 18:41:07
    #6
    Advisor adlı üyeden alıntı: mesajı görüntüle
    doviz.com'un xml adresini paylaşabilirmisin? tcmb server bazen yavaşlıyor. sitede sayfa açılma süresinde etkisi oluyor. doviz.com da öyle bir sorun yok bildiğim kadarıyla..
    rss vermişler zaten

    doviz.com
  • 26-05-2009, 20:25:30
    #7
    niphell adlı üyeden alıntı: mesajı görüntüle
    rss vermişler zaten
    doviz.com
    rss adresi için teşekkürler, repledim ben hep normal html çıktıdan ayırıp cronjob ile güncelliyordum.

    Simple XML ve Xpath ile rahatlıkla yapılabilir.
    <?
    	$ayracalis	= "Alış";
    	$ayracsatis = "Satış:";
    	$ayracson	= " TL";
    	if( ! $xml = simplexml_load_file('http://www.doviz.com/feed/doviz.php?bank=free') ) { echo 'XML Dosyası açılamadı'; }
    	else {
    		$dolaral = $xml->xpath("channel/item[13]"); 			// dolari sectik
    		foreach ($dolaral as $dolaral) {
    			$dolaralyaz2 = $dolaral[0]->description;			// dolar yaza atadık
    			$dolaralyaz  = explode($ayracalis,$dolaralyaz2);	//explode icin alıs dan tl arasını secmek istedik
    			$dolaralyaz  = explode($ayracson, $dolaralyaz[1]);	//ayirdik
    			$dolaralis   = $dolaralyaz[0];						//dolar alis
    			$dolaralyaz  = explode($ayracsatis,$dolaralyaz2);
    			$dolaralyaz  = explode($ayracson, $dolaralyaz[1]); 
    			$dolarsatis  = $dolaralyaz[0];						//dolar satis
    		}
    		$euroal = $xml->xpath("channel/item[6]"); 				// euro sectik
    		foreach ($euroal as $euroal) {
    			$euroalyaz2 = $euroal[0]->description;				// euro yaza atadık
    			$euroalyaz1 = explode($ayracalis,$euroalyaz2);		//explode icin alıs dan tl arasını secmek istedik
    			$euroalyaz  = explode($ayracson, $euroalyaz1[1]);	//ayirdik
    			$euroalalis  = $euroalyaz[0];						//euro alis
    			$euroalyaz3 = explode($ayracsatis,$euroalyaz2);
    			$euroalyaz  = explode($ayracson, $euroalyaz3[1]); 
    			$eurosatis  = $euroalyaz[0];						// euro satis
    			echo $euroalalis;
    		}
    	}
    ?>
    Döviz türünün kısaltmasına göre itemlere attirube atansaydı kod daha kısa olacaktı.
    <kd>XML kullanımını tavsiye ederim. Xpath ile xml den istenen ürünü gösterebilmek gibi. (Basit SQL sorgulamaları rahatlıkla yapılabilir) Yavaş da olmuyor. 550 ürün 150 kb lık xml dosyasında açılma epey hızlı. Müşterim db kullanmasın. xml kullansın diyenler için Örnek kullanım:
    <?
    	if( ! $xml = simplexml_load_file('urun.xml') ) { echo 'XML Dosyası açılamadı'; }
    	else {
    		$urungoster = $xml->xpath("/urunler/urunkato[@kat='a1']/urun[@altkat='b1' and @urunno='01']");
    		foreach ($urungoster as $urungoster) {
    				$yazdir = $urungoster[0]->yazi;
    				echo $yazdir;
    				echo "<br /><br /><br /><br />";
    		} 
    	}
    ?>
    </kd>
  • 26-05-2009, 20:38:51
    #8
    http://www.doviz.com/feed/doviz.php?bank=free
    http://xml.altinkaynak.com.tr/altin.xml
    http://www.dovizxml.com/php-ile-dovi...i-okuma-sayfa/

    Advisor adlı üyeden alıntı: mesajı görüntüle
    doviz.com'un xml adresini paylaşabilirmisin? tcmb server bazen yavaşlıyor. sitede sayfa açılma süresinde etkisi oluyor. doviz.com da öyle bir sorun yok bildiğim kadarıyla..
  • 26-05-2009, 23:11:55
    #9
    Biraz araştırırsanız php5 ile gelen bir fonksiyon vardı, onla kolayca xml'deki verileri çekebilirsiniz.