• 19-06-2010, 21:09:15
    #19
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Yine de tam çözüm olmadı. Mesela HTML deki strong tagının yarım kaldığını düşün (örneğin </stron olarak) Bu sefer benim yazdığım fonksiyon işe yaramayacak, çünkü son 5 karakter üzerinden çalışıyor. Biraz daha geliştirilse fonksiyon fena olmaz...
  • 19-06-2010, 21:33:22
    #20
    7 karakter yaparız o zaman. Sorun yaratır mı sayıyı büyütmek?
  • 19-06-2010, 21:39:45
    #21
    Üzerine biraz daha kafa yordum. Sıkıntı yaratacağını sanmıyorum. -5i de -10 gibi bişey yapabilirsin. En uzun html tagına göre ayarlarsın. Kolay gelsin...
  • 19-06-2010, 21:45:17
    #22
    Peki preg olayıyla şu sorguyu yapamaz mıyız? Son xx karakterde "</" şeklinde başlayıp ">" karakteriyle bitMEyenleri bulsun.
  • 19-06-2010, 23:08:20
    #23
    Yazdığım fonksiyonda onu yapıyor sayılır. İşin güzel yani diğer linkini verdiğim fonksiyon benim yaptığımı tamamlıyor. Ondan bir sorun yok rahatça kullanabilirsin bu ikisini...
  • 20-06-2010, 00:42:46
    #24
    Peki, teşekkürler.
  • 20-06-2010, 07:22:04
    #25
    Kimlik doğrulama veya yönetimden onay bekliyor.
    metadige adlı üyeden alıntı: mesajı görüntüle
    Arkadaşlar mantık geliştirme açısından güzel ancak öyle substr vs. ile olacak iş değil. Bir üstteki mesajımda belirttiğim gibi preg_match_all ile yapılması en kısa yolu, bir örnek ekliyorum, kendinize göre geliştirirsiniz:

    $text = '<h3>başlık3</h3>öylesine yazı<b>bold yazı <p>paragraf';
    if(preg_match_all('/(<[^\>\/]*\>)?([^<\>]+)(<\/[^\>\/]*\>)?/smi',$text,$al)){
      $say = count($al[1]);  
      for($i=0;$i<$say;$i++){
        $yeni .= ($al[1][$i] != '') ? $al[1][$i].$al[2][$i].str_replace('<','</',$al[1][$i]) : $al[2][$i];
      }
    }  
    echo $yeni;
    Sanırım benim mesajım arada kaynadı, işe yaradı dediğiniz fonksiyon yukarda örnek verdiğim texti doğru kapatmıyor, <p> tagını <b> içinde gösteriyor. Oysa benim yazdığımda sorun yok. Atladığım bir yer varsa söylersiniz düzeltiriz, çünkü farklı ihtimaller için kafa yormadım. Bu arada belirttiğin gibi alıntı sonunda </ ile başlayan yer kapanacaksa şu şekile çevirmek yeterlidir sanırım:
    $text = '<h3>başlık3</h3>öylesine yazı<b>bold yazı <p>paragraf</str';
    if(preg_match_all('/(<[^\>\/]*\>)?([^<\>]+)(<\/[^\>\/]*\>)?/smi',$text,$al)){
      $say = count($al[1]);  
      for($i=0;$i<$say;$i++){
        $yeni .= ($al[1][$i] != '') ? $al[1][$i].$al[2][$i].str_replace('<','</',$al[1][$i]) : ((substr($al[2][$i],0,1) != '/') ? $al[2][$i] : '');
      }
    }  
    echo $yeni;
  • 20-06-2010, 12:18:57
    #26
    Hocam zaten doğru olan <p> etiketini <b> içinde göstermesi. Açılış sırasının tersinde kapanıyor işte.
  • 21-06-2010, 02:24:39
    #27
    Hakkaten yav benim kafam durmuş yazarken sanırım
    O zaman şu şekilde yapabiliriz:

    $text = '<h3>başlık3</h3>öylesine yazı<b>bold yazı<u>alt çizgi<p>paragraf</str';
    if(preg_match_all('/(<[^\>\/]*\>)?([^<\>]+)(<\/[^\>\/]*\>)?/smi',$text,$al)){
      $say = count($al[1]);  
      for($i=0;$i<$say;$i++){
        $yeni .= ($al[1][$i] != '' && substr($al[2][$i],0,1) != '/') ? $al[0][$i] : '';
        $son = ($al[3][$i] == '') ? str_replace('<','</',$al[1][$i]).$son : ''; 
      }
    }  
    echo $yeni.$son;