• 29-12-2014, 22:13:08
    #1
    Merhaba,
    aşağıdaki kod ile packages.txt'den son 24 adet veriyi çekiyorum.
    $sayac=1;
    $site = file_get_contents("packages.txt");
    $aranan = "#Name:(.*?)\n+Version:(.*?)\n+Section:(.*?)[\n+|/b]#";
    $sayi = preg_match_all($aranan, $site, $ara);
    $son5 = $sayi - 24;
    echo "<div class='repo'><ul>";
    for($a=$son5; $a<$sayi; $a++){
    echo "<li><a href='#' title=''>";
       echo "<p class='baslik'>".$sayac.")".baslik_kisalt($ara[1][$a])."</p>";
       echo "<p class='version'>Version : ".$ara[2][$a]."</p>";
       echo "<p class='section'>".$ara[3][$a]."</p>";
    echo "</a></li>";
    $sayac++;
    }
    echo "</ul></div>";
    Packages.txt içeriğim ;
    Package: paket id adi
    Name: paket adi
    Version: 1.8
    Architecture: iphoneos-arm
    Description: paket açıklaması
    Depiction: index.html
    Homepage: http://www.abc.com
    Maintainer: abc.com<iletisim@abc.com>
    Author: abc.com<iletisim@abc.com>
    Sponsor: abc.com<iletisim@abc.com>
    Section: Sistem
    Filename: ./exe/paket.exe
    Size: 64588
    MD5sum: 0000000000000000
    Yukarıdaki txt dosyasındaki alanlardan o dosyada birsürü var. Hepsi aynı şekilde. Ben buradan name version ve section kısımlarını çekmek istiyorum. Ancak birşey dönmüyor. preg_match_all ifadem de ki kodu şu şekilde yapınca ;
    $aranan = "#Name:(.*?)\n+Version:(.*?)[\n+|/b]#";
    bir sorun olmuyor. Aslında sorun çekmek istediğim alanların art arda olmaması bu yüzden hata oluyor sanırsam. bu sorunu nasıl çözebilirim
  • 31-12-2014, 21:22:58
    #2
    Konu günceldir.
  • 31-12-2014, 21:40:15
    #3
    gözünüzde desenleri bu kadar büyütmeyin , http://rubular.com/r/WIrs75IpcM bu linktei desen eğer yapı böyleyse çözüm olacaktır.
  • 31-12-2014, 22:32:21
    #4
    hocam belki sayi değişkini couınt($sayi) yaparsan çalışabilir.bir deneyebilir misin?


    echo "<div class='repo'><ul>";
    for($a=$son5; $a<$sayi; $a++){
  • 31-12-2014, 22:53:46
    #5
    Big_Turk adlı üyeden alıntı: mesajı görüntüle
    gözünüzde desenleri bu kadar büyütmeyin , http://rubular.com/r/WIrs75IpcM bu linktei desen eğer yapı böyleyse çözüm olacaktır.
    Yapı böyle ama section kısmını çekemiyorum. Çünkü section kısmı biraz altta kalıyor. Şu desenleri bir türlü öğrenemedim. Doğru düzgün türkçe anlatımıda yok.

    EmQcer adlı üyeden alıntı: mesajı görüntüle
    hocam belki sayi değişkini couınt($sayi) yaparsan çalışabilir.bir deneyebilir misin?
    echo "<div class='repo'><ul>";
    for($a=$son5; $a<$sayi; $a++){
    Onunla alakalı değil hocam desenlerle alakalı
  • 01-01-2015, 23:50:49
    #6
    Big_Turk adlı üyeden alıntı: mesajı görüntüle
    gözünüzde desenleri bu kadar büyütmeyin , http://rubular.com/r/WIrs75IpcM bu linktei desen eğer yapı böyleyse çözüm olacaktır.
    "Desen" ismi çok ilginç olmuş, ilk defa karşılaştım. Bunun Türkçe olarak yaygın kullanımı var mı? Düzenli ifade, ifade veya kalıp kelimeleri kullanmayı tercih ediyorum ben genelde, desen gerçekten ilginç olmuş, baya şaşırdım
  • 02-01-2015, 00:02:32
    #7
    aTKn94 adlı üyeden alıntı: mesajı görüntüle
    Yapı böyle ama section kısmını çekemiyorum. Çünkü section kısmı biraz altta kalıyor. Şu desenleri bir türlü öğrenemedim. Doğru düzgün türkçe anlatımıda yok.


    Onunla alakalı değil hocam desenlerle alakalı
    Soruyu yanlış anlamışım ben ikisini aynı anda çekmeyi düşündüğünüzü sanmıştım yapıyı tek desende çekmek yerine birden fazla desende farklı değişkenlere atarak kullanın örneğin ;

    	$deger = '
    	Package: paket id adi
    Name: paket adi
    Version: 1.8
    Architecture: iphoneos-arm
    Description: paket açıklaması
    Depiction: index.html
    Homepage: http://www.abc.com
    Maintainer: abc.com<iletisim@abc.com>
    Author: abc.com<iletisim@abc.com>
    Sponsor: abc.com<iletisim@abc.com>
    Section: Sistem
    Filename: ./exe/paket.exe
    Size: 64588
    MD5sum: 0000000000000000
    Package: paket id adi
    Name: paket adi
    Version: 1.8
    Architecture: iphoneos-arm
    Description: paket açıklaması
    Depiction: index.html
    Homepage: http://www.abc.com
    Maintainer: abc.com<iletisim@abc.com>
    Author: abc.com<iletisim@abc.com>
    Sponsor: abc.com<iletisim@abc.com>
    Section: Sistem
    Filename: ./exe/paket.exe
    Size: 64588
    MD5sum: 0000000000000000
    ';
    
    	preg_match_all('@Version:(.*?)\n@si', $deger,$version);
    	preg_match_all('@Section:(.*?)\n@si', $deger,$section);
    	preg_match_all('@Package:(.*?)\n@si', $deger,$package);
    	for ($y=0; $y<count($section[1]); $y++) {
    		$versiondeger = $version[1][$y];
    		$sectiondeger = $section[1][$y];
    		$packagedeger = $package[1][$y];
    		echo 'Version değeri : '.$versiondeger.'<br>';
    		echo 'Package değeri : '.$packagedeger.'<br>';
    		echo 'Section değeri : '.$sectiondeger.'<br><hr>';
    	
    	}
    gibi tek desen kullanmak yerine birden fazla işlem için ayrım yaparak desenleri kullanın. Bu seçimi sistemin düzenliliğine göre ayarlarsanız çok daha rahat edersiniz.

    reddoc adlı üyeden alıntı: mesajı görüntüle
    "Desen" ismi çok ilginç olmuş, ilk defa karşılaştım. Bunun Türkçe olarak yaygın kullanımı var mı? Düzenli ifade, ifade veya kalıp kelimeleri kullanmayı tercih ediyorum ben genelde, desen gerçekten ilginç olmuş, baya şaşırdım
    Pattern kelimesinin türkçe karşılığı desen olduğu için ve bende bir testilci çocuğu olduğum için regex yapıları bana kumaş desenlerini anımsatıyor. Her ne kadar tüm terimlerin türkçesini kullanmak banada yanlış gelsede yaygın kullanılan istisnalardan bir tanesi sanırım bu.

    Küçük Bir google araştırmasında da benim gibi desen kelimesini kullanan kişilere ulaşmak mümkün
  • 04-01-2015, 17:20:38
    #8
    bu https://regex101.com/ ve https://xrg.es/ bu sitelerden de yardım alabilirsin hocam.