Arama butonu
Bu konudaki kullanıcılar: 1 misafir
10
Cevap
424
Tıklama
0
Öne Çıkarma
Html <b> etiketini açık unutmak
M
8 yıl
Çavuş
Konu Sahibi

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?

DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.

Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.

Üye Ol Şimdi Değil



M
8 yıl
Çavuş
Konu Sahibi

Ü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...




M
8 yıl
Çavuş
Konu Sahibi

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



M
8 yıl
Çavuş
Konu Sahibi

Hala bulamadım arkadaşlar...



C
8 yıl
Yüzbaşı

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)


Bu mesaja 1 cevap geldi.
M
8 yıl
Çavuş
Konu Sahibi

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...


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @CarnageTR
C
8 yıl
Yüzbaşı

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 >
Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @Mehmet0173
M
8 yıl
Çavuş
Konu Sahibi

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;
}


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @CarnageTR
C
8 yıl
Yüzbaşı

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




Bu mesajda bahsedilenler: @Mehmet0173
M
8 yıl
Çavuş
Konu Sahibi

Arkadaşlar yapamadım birtürlü. Yok mu burda bir profesyonel veya kodlardan iyi anlayan?



M
8 yıl
Çavuş
Konu Sahibi

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);
}



DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.