• 09-12-2009, 04:26:37
    #1
    veritabanımdan çektiğim banlı kelimeler listesi var. eğer sayfaya ait başlıkta, o banlı kelimelerden biri geçerse anasayfaya yönlendirme yapıcam.

    sorun şurası veritabanından aldığım banlı kelime listelerini metin içerisinde nasıl eşleştircem.
    örnek:
          <?
          $metin="Baya yol katettim, Pekte zor değilmiş Bu PHP'yi Öğrenmek..";
          if ( strstr($metin,"zor")){ echo "Kelime bulundu.";}else{ echo "Kelime Bulunamadı";};
          ?>
    şekline bi örnek buldum. ama 2 ihtimal göz önünde bulundurdum.
    strstr($metin,"zorlu")
    şeklinde yapınca bulunmuyor.
    2. ihtimalde ise metini değiştirerek
          <?
          $metin="Baya yol katettim, Pekte zorlu değilmiş Bu PHP'yi Öğrenmek..";
          if ( strstr($metin,"zor")){ echo "Kelime bulundu.";}else{ echo "Kelime Bulunamadı";};
          ?>
    dikkat ettiyseniz metin içerisinde zorlu şeklinde yaptım. sonuç olarak kelime bulundu yazıyor. ama zor ile zorlu aynı şey değil. ben birerbir eşleme nasıl yapabilirim.

    serverı yormadan en kısa nasıl bir eşleme algoritması kullanabiliriz. yada benm bu soruya uygun bilmediğim özel bir fonksiyon varmı.
    Saygılar.
  • 09-12-2009, 07:41:46
    #2
    Üyeliği durduruldu
    aşağıda yazdığım örnek, "zor" kelimesini bulmaz "zorlu" kelimesini bulur, yani bire bir eşleşen kelimeleri bulur, kodları inceleyerek detaylı anlayabilirsiniz.
    <?
    $metin = "Baya yol katettim, Pekte zorlu değilmiş Bu PHP'yi Öğrenmek..";
    if (preg_match("#zor\b#", $metin)) { 
        echo "Kelime bulundu.";
    } else { 
        echo "Kelime Bulunamadı";
    }
    ?>
  • 09-12-2009, 09:57:42
    #4
    Üyeliği durduruldu
    soruyu yanlış anlamışsınız sanırım hocam.
  • 09-12-2009, 11:14:45
    #5
    Üyeliği durduruldu
    hatta;
    http://www.programlamatv.com/ders/ph...os-fonksiyonu/
  • 09-12-2009, 11:55:42
    #6
    Üyeliği durduruldu
    strpos bire bir eşleşme kontrol edilemez, onun yerine aşağıdaki örnekte verdiğim gibi preg_match("aranan\b", $veri) şeklinde bir kullanım birebir eşleşme sağlayacaktır.
    yani biz "atatürk" kelimesi içeren bir cümle içerisinde sadece "ata" kelimesi ayrı bir kelime olarak geçiyormu? diye kontrol etmek istiyorsak bunu strpos ile yapamayız.
  • 09-12-2009, 23:04:42
    #7
    devturkeli adlı üyeden alıntı: mesajı görüntüle
    aşağıda yazdığım örnek, "zor" kelimesini bulmaz "zorlu" kelimesini bulur, yani bire bir eşleşen kelimeleri bulur, kodları inceleyerek detaylı anlayabilirsiniz.
    <?
    $metin = "Baya yol katettim, Pekte zorlu değilmiş Bu PHP'yi Öğrenmek..";
    if (preg_match("#zor\b#", $metin)) { 
        echo "Kelime bulundu.";
    } else { 
        echo "Kelime Bulunamadı";
    }
    ?>
    hocam çok sağolun işime yaradı tam istediğim gibi. ama bişi soraca
    #zor\b# \b# ne anlama geliyor. preg_match işlemlerinde sürekli bunlarla alakalı terimler var.
  • 10-12-2009, 00:09:39
    #8
    preg match in icinde yazılanlar regular expression deniyor.
    b ise boundry oluyor yani sinirlama olarak cevirebiliriz. tum kelimeleri bul seklinde arama yapmamizi sagliyor.
    kolay gelsin.
  • 10-12-2009, 08:39:09
    #9
    Üyeliği durduruldu
    pardon bende soruyu yanlis anlamisimda çözülmüşte zaten :P