• 19-06-2010, 02:24:46
    #10
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Biraz yazdım. Artık kafam patlayacak gibi oldu sildim attım. Size kolay gelsin. Patlatın kafaları. Bu arada, array_reverse ile etiketileri tersten yazdırmayı unutmayın. Yapmışken tam yapın, xHTML hatası vermesin. =)))
  • 19-06-2010, 02:34:33
    #11
    kardeş ben sana mantığını kurayım sen yap ama uzun bir kod olacak. önce muhtemel tagları belirle. <b.. <a.. <div... <span... gibi. bunların hepsini ayrı ayrı say.

    bir de </a>, </b>, </div> vb... gibi kapatmaları say.

    örneğin <a.. sayısından </a> sayını çıkart. eğer 0'dan büyükse </a> yazdır sonuna.

    tabi sıralamalarını da aynı şekilde vermek gerekecek. muhtemelen <div.. içinde <a... olacaktır. o yüzden ilk işlemi a'lar üzerinde yapmak gerekebilir.

    şimdilik böyle bir mantık kurdum. belki birazdan editlerim aklıma birşey gelirse.
  • 19-06-2010, 02:40:32
    #12
    Kimlik doğrulama veya yönetimden onay bekliyor.
    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;
  • 19-06-2010, 06:46:42
    #13
    Üyeliği durduruldu
    wordpress gibi yapmak istiyor arkadaş galiba.

    aşagıda basit örnek yazdım geliştirebilirsiniz.

    yazı keserken belirli bir etiket yazman lazım ben <!--more--> kullandım.bu şekilde html etiketleri açık kalmaz

    //Oğuz KOÇ
    
    $fix = "Lorem ipsum dolor sit amet consectetuer id congue pretium 
    sollicitudin faucibus. Cursus eget <!--more--> Duis Suspendisse lacus felis turpis 
    nonummy sollicitudin vitae sem. Consectetuer Phasellus at urna adipiscing 
    Vivamus eleifend interdum sed justo gravida. Condimentum consequat Curabitur."; 
    $yer= strpos($fix, "<!--more-->");
    echo substr($fix,0,$yer);
  • 19-06-2010, 11:19:45
    #14
    Kimlik doğrulama veya yönetimden onay bekliyor.
    http://milianw.de/code-snippets/close-html-tags

    Sanırım linkteki fonksiyon işine yarar...
  • 19-06-2010, 12:42:39
    #15
    arno adlı üyeden alıntı: mesajı görüntüle
    http://milianw.de/code-snippets/close-html-tags

    Sanırım linkteki fonksiyon işine yarar...
    Aranan kan budur. +rep
  • 19-06-2010, 20:02:37
    #16
    Arno çok teşekkürler, aradığım şey buydu. Ancak şöyle ufak bir problem daha var ve bu XHTML hatasına neden oluyor.

    Mesela metnin tam bölündüğü yerde bir etiket var. Bu etiket normalde </c şeklinde açık kalıyor. Bu fonksiyonu kullanınca sonuna > işareti ekliyor. Bu şekilde sonu olmayan etiketleri nasıl sileriz.

    Aslında benim kafamda bir şey var; ama bilmediğim için yapamadım. Preg_match_all ile şunu yazabilecek biri var mı? </ şeklinde başlayıp 5 karakter sonrasına kadar > karakteri olmayan satırları arasın.
  • 19-06-2010, 20:26:19
    #17
    Önemli değil.
    Son sorduğun soru için yukarıda belirttiğim fonksiyonu kullanmadan önce aşağıda yazacağım fonksiyonu da kullanırsan sorun kalmaz.

    function checkLast5 ($string){
            $last5 = substr($string, -5);
            $pos = strpos($last5, "</");
            if ($pos === false) {
                return $string;
            } else {
                return substr($string, 0, -5+$pos);
            }
        }
  • 19-06-2010, 20:57:27
    #18
    Tekrar teşekkürler Arno. Bu da çalıştı.