Şimdi Ara

Html <b> etiketini açık unutmak

Bu Konudaki Kullanıcılar:
1 Misafir - 1 Masaüstü
5 sn
12
Cevap
0
Favori
368
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Merhabalar. Ufak bir blog sitesi yapıyorum. Üyeler de durum paylaşımı yapabiliyor ama bir sorunla karşılaştım.

    Sorunun kaynağı şu; ben sitede BB kodu kullanıyorum. mesela üye durumunu paylaşırken [.b]hava güzel[/b.] olarak kaydediyor,
    ben bunu çekerken PHP fonksiyonuyla <b >hava güzel< /b> olarak çekip yayınlıyorum. Böylece kalın yazmış oluyor üye.

    Ama sorun şu ki, üyelerden biri "[b ]hava güzel." şeklinde b tagını kapatmazsa, paylaşımı listelerken alttaki tüm paylaşımlar da kalın oluyor. Bu sorunu nasıl çözebilirim?



  • Üyelerin durumlarını aşağıdaki gibi alt alta listeliyorum. Ama aynı aşağıdaki örnekteki gibi ahmet b etiketini kapatmadığı için velinin de yazıları kalın görünüyor, hatta sitenin en altındaki siteye ait yazı ve linkler de kalınlaşıyor.

    <div class="konu">
    Ahmet: hava güzel.
    </div>

    <div class="konu">
    Veli: akşam oldu yine.
    </div>
    ...
    (c) siteadı.com | hakkımızda...

  • Bilen kimse yok mu? Bakın mesela burda da yorum yaparken bb kodu var ama açık bırakınca siteye zararı olmuyor. PHP'nin exit; fonksiyonu gibi html'de de yok mu öyle birşey
  • Hala bulamadım arkadaşlar...
  • BB'ye özel bir meethod var mı bilmiyorum ama manuel olarak düzeltme yapabilirsin. Üye durumlarını array olarak tutuyor olduğunu farz ediyorum. Arraydan item çekerken çekilen item içinde [.b] varsa [/b.] arayacak ifade yazman lazım. Eğer kapanma tag ı yoksa cümlenin en sonuna otomatik ekletmen lazım. PHP bilmiyorum ama Python olsaydı bu şekilde olurdu:

    gonderiler = "[.b]hava güzel", "naber", "nasılsın" 

    # Gönderileri tek tek işleme alıyor
    for gönderi in gönderiler:

    # Gönderi içinde başlangıç tag ı var mı diye bakıyor
    if "[.b]" in gonderi:

    # başlangıç tag ı varsa bitiş var mı diye bakıyor
    if "[/b.]" in gönderi:
    # bitiş tagı var demek ki sorun yok. gönderi yazılabilir
    gonderi = gonderi

    else:
    # Bitiş tag ı yok. Gönderinin sonuna bitiş tagı ekleniyor
    gonderi = gonderi + '[/b.]'

    # Gönderide başlangıç tagı yok ise işlem yapılmıyor
    else:
    gonderi = gonderi


    print(gönderi)




  • CarnageTR C kullanıcısına yanıt
    Yardımınız için çok teşekkür ederim. Manuel silemem malesef, günde 100 paylaşım olsa her gün tek tek bakmam gerekecek.
    Yazdığınız kodu da anladım, çok da güzel olurdu ama malesef PHP'ye yorumlayamadım ve benzerini yapacak tecrübeye erişemedim henüz ama bir bakınacam yine, yapmaya çalışacam en azından. Fakat şu da var, üye iki defa [.b][.b] yaparsa ve kapatmazsa bu sefer de iki tane [/b.][/b.] koydurmam gerekecek heralde. Bun BB kodun sorunsuz çalıştığı yer çok. Buradaki yorumlarda da sorunsuz çalışıyor dediğim gibi.

    Bilen arkadaşlar buraya denk gelir inşallah...
  • Mehmet0173 M kullanıcısına yanıt
    Manuelden kastım benim yazdığım gibi bir kod yazarak araya sıkıştırmaktı. BB kullanmadım daha önce belki içerisinde bahsettiğin hatayı giderecek bir filtre mekanizması vardır bilmiyorum.

    İkinci soruna gelirsek o gibi durumlar için fonksiyona [.b] ve [/b.] sayılarını sayıp eksik kadar [/b.] yi sona ekleme gibi bir çözüm getirilebilir. Ya da daha sofistike olarak içten dışarı doğru [.b] ... [/b.] çiftleri oluşturulup en dışta eşi olmayan tag <b> ye çevrilmeden bırakılır.



    < Bu mesaj bu kişi tarafından değiştirildi CarnageTR -- 4 Mart 2017; 21:31:1 >
  • CarnageTR C kullanıcısına yanıt
    Anladım. teşekkür ederim tekrar ama yeteri kadar kod bilgim yok malesef. Bu arada bahsettiğim BB kodu fonksiyonu bu aşağıdaki. öyle çok özellikli birşey değil. Yazının içindeki köşeli parantezli etiketleri <b.> şeklinde html etiketine çeviriyor sadece.

     
    function bb_code($yazi){
    $bb_kodu = array("[b]", "[/b]", "[u]", "[/u]", "[i]", "[/i]");
    $html_kodu = array("<b>", "</b>", "<u>", "</u>", "<i>", "</i>");
    $yeni_yazi = str_replace($bb_kodu, $html_kodu, $yazi);
    return $yeni_yazi;
    }
  • Mehmet0173 M kullanıcısına yanıt
    işte bu fonksiyondan öncesinde başka bir fonksiyon açılış ve kapanış tag larını eşitlemeli. sonrasında bu fonksiyon da gerekli değiştirmeyi yapabilsin
  • Arkadaşlar yapamadım birtürlü. Yok mu burda bir profesyonel veya kodlardan iyi anlayan?
  • tamam buldum, böyle bir kod varmış.

       function bbkod($par) 
    {
    $bul = array(
    '#\[youtube=(.*?)\]#',
    '#\[b\](.*?)\[/b\]#'
    );

    $degistir = array(
    '<iframe width="100%" height="315" src="http://www.youtube.com/embed/$1" frameborder="0" allowfullscreen></iframe>',
    '<strong>$1</strong>'
    );

    return preg_replace($bul, $degistir, $par);
    }
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.