• 13-11-2016, 00:32:54
    #1
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Merhaba arkadaşlar.

    Bir stringde bulunan değişik formatlarda yazılmış telefon numaralarının gizlenmesi - silinmesi için bir fonksiyona ihtiyacım var. str_replace fonksiyonunda birkaç deneme yaptım fakat tüm numaraları kapsayan bir kod yazamıyorum.

    Yazı ile birlikte bulunan telefon numarasını, yazı içerisinde bularak silecek ve yazının çıktısını verecek bir fonksiyon ihtiyacım olan. Örnek vermem gerekirse;

    Alıntı
    Merhaba ben Ali. Telefon numaram 0530 123 45 67
    İstediğim Çıktı adlı üyeden alıntı:
    Merhaba ben Ali. Telefon numaram
    Telefon numaralarının değişik formatlarda (Ör: 05301234567 veya 0530 123 4567) yazılmasını da kapsayacak fonksiyonu nasıl yazabilirim?

    Şimdiden yardımlarınız için çok teşekkürler.
  • 13-11-2016, 00:41:16
    #2
    Üyeliği durduruldu
    preg_replace( '/[^0-9]/', '', $str);

    Tüm sayıları silmek için.
  • 13-11-2016, 00:45:07
    #3
    Angry adlı üyeden alıntı: mesajı görüntüle
    preg_replace( '/[^0-9]/', '', $str);

    Tüm sayıları silmek için.
    Bu kod malesef sorunu çözmez, önerebileceğim şey tüm telefon numarası kombinasyonlarını listeleyip ona göre bir regex yazmanızdır.
    Bknz:
    555 333 33 33
    5553333333
    555 33 3333
  • 13-11-2016, 01:39:30
    #4
    Üyeliği durduruldu
    xFactoria adlı üyeden alıntı: mesajı görüntüle
    Bu kod malesef sorunu çözmez, önerebileceğim şey tüm telefon numarası kombinasyonlarını listeleyip ona göre bir regex yazmanızdır.
    Bknz:
    555 333 33 33
    5553333333
    555 33 3333
    Sorunu çözmez tüm sayıları siler çünkü doğru.
    Sadece telefon numarası içerenleri silmek evet onun mantığını düşünmek lazım.Çok kolay değil üstünde uğraşmam gerek vaktim olsa bakardım.

    55 53 54 vs içerenleri bul 11 hane ise hesapla sil vs.boşlukları ve sıfırı da hesap et tabi ilk aklıma gelen

    Yarın vaktim olursa çözüm yazan olmaz ise bi bakarım
  • 13-11-2016, 01:51:00
    #5
    Angry adlı üyeden alıntı: mesajı görüntüle
    Sorunu çözmez tüm sayıları siler çünkü doğru.
    Sadece telefon numarası içerenleri silmek evet onun mantığını düşünmek lazım.Çok kolay değil üstünde uğraşmam gerek vaktim olsa bakardım.

    55 53 54 vs içerenleri bul 11 hane ise hesapla sil vs.boşlukları ve sıfırı da hesap et tabi ilk aklıma gelen

    Yarın vaktim olursa çözüm yazan olmaz ise bi bakarım
    Hocam dediğiniz mantık en doğru olanı Ama benim bunu yapabilecek kadar bilgim mevcut değil http://regexr.com sitesinden birkaç örneğe baktım hiçbiri uymuyor. Yabancı ülkeler için örnek fonksiyonlar paylaşılmış fakat Türkiye numaralarına benzeyen de yok.

    Vaktiniz olursa, müsait olduğunuzda bakabilirseniz çok sevinirim. Benim ve bu konuyu araştıran birçok kişi için çok faydalı olacağına emin olabilirsiniz

    Şimdiden çok teşekkür ederim.
  • 13-11-2016, 03:35:43
    #6
    MuminYazar adlı üyeden alıntı: mesajı görüntüle
    Hocam dediğiniz mantık en doğru olanı Ama benim bunu yapabilecek kadar bilgim mevcut değil http://regexr.com sitesinden birkaç örneğe baktım hiçbiri uymuyor. Yabancı ülkeler için örnek fonksiyonlar paylaşılmış fakat Türkiye numaralarına benzeyen de yok.

    Vaktiniz olursa, müsait olduğunuzda bakabilirseniz çok sevinirim. Benim ve bu konuyu araştıran birçok kişi için çok faydalı olacağına emin olabilirsiniz

    Şimdiden çok teşekkür ederim.
    function numara_temizle($metin)
    {
    	return preg_replace('#(([0]?5\d{2})|(\([0]?5\d{2}\)))[- ]?\d{3}[- ]?\d{2}[- ]?\d{2}#', '', $metin);
    }
    
    /*
    Örnek kullanım:
    $icerik = numara_temizle($_POST['icerik']);
    */
    Fazla vaktim olmadığı için tüm olasılıkları göz önünde bulunduramamış olabilirim eksiklikler varsa şimdiden kusura bakmayın. Bu pattern ile aşağıda verdiğim formattaki telefon numaralarını silerken aynı formata sahip rakam içeren diğer metinleri silmeyecektir.

    Alıntı
    1) 0567 890 12 34
    2) 0567 890 1234
    3) 05678901234
    4) 567 890 1234
    5) 567 890 12 34
    6) (567) 890 12 34
    7) (567) 890 1234
    8) (0567) 890 12 34
    9) (0567) 890 1234
    10) 567-890-12-34
    11) 0567-890-12-34
    12) 567-890-1234
    13) 0567-890-1234
    14) (567)-869-12-34
    15) (0567)-890-12-34
    16) (567)-869-1234
    17) (0567)-890-1234
  • 14-11-2016, 14:43:21
    #7
    CBSoft adlı üyeden alıntı: mesajı görüntüle
    function numara_temizle($metin)
    {
    	return preg_replace('#(([0]?5\d{2})|(\([0]?5\d{2}\)))[- ]?\d{3}[- ]?\d{2}[- ]?\d{2}#', '', $metin);
    }
    
    /*
    Örnek kullanım:
    $icerik = numara_temizle($_POST['icerik']);
    */
    Fazla vaktim olmadığı için tüm olasılıkları göz önünde bulunduramamış olabilirim eksiklikler varsa şimdiden kusura bakmayın. Bu pattern ile aşağıda verdiğim formattaki telefon numaralarını silerken aynı formata sahip rakam içeren diğer metinleri silmeyecektir.
    Çok teşekkür ederim hocam. Test ettim gayet iyi çalışıyor emeklerinize sağlık.
  • 14-11-2016, 19:14:56
    #8
    MuminYazar adlı üyeden alıntı: mesajı görüntüle
    Çok teşekkür ederim hocam. Test ettim gayet iyi çalışıyor emeklerinize sağlık.
    Rica ederim hocam, kolay gelsin.