• 26-02-2015, 22:33:01
    #1
    Başlıkta aslında istediğim şeyi tam olarak belirttim fakat biraz daha açıklayayım. Elimde bir txt dosyası var içinin örneği aşağıdaki gibi. Ben bu txt dosyası içinde A harfi ile başlayanları, B harfi ile başlayanları gelen GET sorgusuna göre sıralamak istiyorum. Yani daha da açacak olursam mysqldeki regexp ile ya da like ile yaptığım sorguyu txt dosyası üzerinde uygulamak istiyorum. Bunun bi oluru var mıdır?

    Txt örnek
    Ali
    Berat
    Ayşe
    Baran
    Aysun
    Ayfer
    Bekir
  • 26-02-2015, 23:30:53
    #2
    Dosya ve kulanıcı sayisi artikca hız konusunda güzel sorun yaşamanız kaçınılmaz.
    en basitinden dosyayı değişkene atip \n explode vb ile parçalayip oluşan diziyi ister siralayarak uygun dizi elemanından yazdırarak, yada bütün dizi ellemanlarını kontrol ederek yapabilirsiniz.
  • 27-02-2015, 00:05:05
    #3
    yöntemi buldum, biraz amatörce bir yöntem ama idare eder şimdilik. Bu yaptığım işlem mysql'den veri çekmekten daha iyi performans veriyor. Txt dosyamdaki satır sayısı yaklaşık 12 bin civarı. Performans açısından tavsiye ettiğiniz farklı bir yöntem var mı? Json ya da varsa alternatif bir yöntem, hangisi daha avantıjlıdır?

    Aynı problemle karşılanlar için kullandığım yöntemi paylaşayım belki kullanan olur.
    <?php
    $file = @file("dosya.txt");
    $say = count($file);
    for($i=0;$i<$say;$i++){
    $ilkHarf = $file[$i][0]; //satırdaki ilk harfi aldım ve if döngüsüyle get isteğinden gelen harfle kıyasladım.
    if($ilkHarf==$_GET['gelenharf']){
    echo $file[$i]."<br />";//Burada her ne işlem yapmak istiyorsanız artık. Örnek olsun diye ekrana yazdırdım.
    }
    }
    ?>
  • 27-02-2015, 00:40:22
    #4
    $t = 'Ali
    Berat
    Ayşe
    Baran
    Aysun
    Ayfer
    Bekir';
    
    preg_match_all('/A[a-z]+/',$t,$m);
    
    print_r($m);
    
    preg_match_all('/B[a-z]+/',$t,$m);
    
    print_r($m);
  • 27-02-2015, 00:45:01
    #5
    çok daha temiz bir yöntem teşekkürler
  • 27-02-2015, 00:46:09
    #6
    Rica ederim.
  • 01-03-2015, 15:29:36
    #7
    bu yöntem sadece satır başındaki harfi almıyor diğer verilerdeki a ya da b ile başlayan kelimeleri de alıyor. Desenlerden pek anlamadığım için düzenleyemedim. Bi de veritabanından kullanıcıları çekip text dosyasına yazdırıyorum dosyada herhangi bir problem görünmüyor fakat ilk karaktere göre sıralamaya çalıştığım zaman türkçe karakterlerde problem yaşıyorum bunun nedeni ne olabilir?
  • 01-03-2015, 15:48:17
    #8
    [a-z] olan kısmı [a-zçğıöü] olarak değiştirirsen Türkçe karakter sorunu çözülmüş olur.
  • 01-03-2015, 16:03:06
    #9
    bu şekilde işe yaradı gerçekten teşekkür ederim, bir de sadece satır başına göre arama yapabiliyor muyuz desenleri araştırdığım kadarıyla ^A şeklinde satır başında arama yaptırabiliyormuş ama ben bir türlü beceremedim şuan

    preg_match_all('/Ç[a-zçğıöüÇĞIÖÜ]+/',$t,$m);
    şeklinde yapınca Ç ile başlayan her kelimeyi döndürüyor.