• 03-06-2009, 21:51:04
    #1
    Şöyle bir şey yapmaya çalışıyordum. Diyelim ki bir fonksiyonumuz var, belirli alanı " eğik" yapıp sonuç döndürüyor.
    bir örnek vereyim
    $icerik = " ali topu at , [EGIK]veli ipi tut , cemil  smaç [/EGIK] bas. ";
    
    //yapmaya çalıştığım bir fonksiyonla [TAG] [/TAG] arasında işlem uygulamak
    $icerik = egik_yap($icerik);
    
    // $icerik = "  ali topu at , <i>veli ipi tut , cemil smaç</i> bas.  " şeklinde sonuç dönsün
    ...
    ..
    .
    Arkadaşlar tabiri caizse beynim durmuş durumda şu anda, ufak tefek hatalarımı bile göremiyorum. uykusuzluktan mıdır nedir bilmiyorum. yardımcı olabilirseniz sevinirim.
    uyumam lazım sanırsam
  • 03-06-2009, 21:59:40
    #2
    str_replace'le neden degismiyorsun yada konuyu ben mi anlayamadım?
  • 03-06-2009, 22:06:26
    #3
    function egik_yap($yazi){
    $ara = array('[egik]','[EGIK]','[/egik]','[/EGIK]');
    $degistir = array('<i>','<i>','</i>','</i>');
    $yeni = str_replace($ara,$degistir,$yazi);
    return $yeni;
    }
    yapılabilir ben böyle kullanıyorum hepsini tek tek ekliyorum
  • 03-06-2009, 22:06:40
    #4
    STI adlı üyeden alıntı: mesajı görüntüle
    str_replace'le neden degismiyorsun yada konuyu ben mi anlayamadım?
    str_replace işini görür gibi yada sorunu biraz daha detaylı açarsan
  • 03-06-2009, 22:18:47
    #5
    @yuqselx teşekkürler. bir nebze işe yarasa da tam olarak aradığım faklı birşeydi.

    işin açıkcası eklenti sistemi ekliyorum scripte, aslında ekledim de sayılır.
    Burada yapmak istediğim bir eklenti dosyasıyla, bir fonksiyonla içerik değişkenime hook atmak. ve belirli [TAG] [/TAG] arasındaki değerleri çekmek. ve burdaki değerlerle bazı işlemler yapmak, eğik olayı sadece biraz açıklayıcı olsun diye yazmıştım.
    Ama aklıma bir yol geldi bi deniyim bakayım.


    edit explode ile yaptım

    $metin = "ali [b] kaliiiiiin[/b] veli ";
    
    $i = explode("[b]",$metin);
    $o = explode("[/b]",$i[1]);
    
    echo $i[0]."<b>".$o[0]."</b>".$o[1];
    echo "<br> secilen veri : ".$o[0];
    başka bir yolu daha olabilebilir mi acaba ?
    mesela bu tek cümle için bir örnek bunu.
    içerikte birden fazla TAG varsa $dizi içinde bulnarı toplayacak ifadesi nasıl yazılabilir acaba ?
    icerikte
  • 03-06-2009, 23:29:57
    #6
    <?php
    $metin = "ali [b] kaliiiiiin[/b] veli ";
    preg_match_all("@\[(.*?)\](.*?)\[/(.*?)\]@i",$metin,$cikti);
    print_r($cikti[2]);
    ?>
    gibi birşey mi ?
  • 03-06-2009, 23:36:59
    #7
    LaCReMeL adlı üyeden alıntı: mesajı görüntüle
    <?php
    $metin = "ali [b] kaliiiiiin[/b] veli ";
    preg_match_all("@\[(.*?)\](.*?)\[/(.*?)\]@i",$metin,$cikti);
    print_r($cikti[2]);
    ?>
    gibi birşey mi ?
    evet o tarz bişey @LaCReMeL, sağol.
    ama [TAG] [/TAG] arası için nasıl düzenleyebilirim bunu acaba ?
  • 03-06-2009, 23:51:47
    #8
    <?php
    function Parse_Tag_EGIK_Recursive($Input){
    	$tmp = $Input;
        $tmp2 = preg_replace('#\[EGIK\](.*)\[/EGIK]#', '<em>$1</em>', $Input);
        if($tmp <> $tmp2)
        	return Parse_Tag_EGIK_Recursive($tmp2);
        return $tmp2;
    }
    
    function Parse_Tag_KALIN_Recursive($Input){
    	$tmp = $Input;
        $tmp2 = preg_replace('#\[KALIN\](.*)\[/KALIN]#', '<b>$1</b>', $Input);
        if($tmp <> $tmp2)
        	return Parse_Tag_KALIN_Recursive($tmp2);
        return $tmp2;
    }
    
    function Parse_Tag_BUYUK_Recursive($Input){
    	$tmp = $Input;
        $tmp2 = preg_replace('#\[BUYUK\](.*)\[/BUYUK]#', '<span style="font-size:24px">$1</span>', $Input);
        if($tmp <> $tmp2)
        	return Parse_Tag_BUYUK_Recursive($tmp2);
        return $tmp2;
    }
    
    $Content = <<<_EOF
    
    [EGIK]testtest[KALIN]test2test2[/KALIN]test3test3[/EGIK]
    <br>
    [KALIN]lorem [BUYUK]ipsum [EGIK]dolar[/EGIK][/BUYUK][/KALIN]
    _EOF;
    
    $Content = Parse_Tag_EGIK_Recursive($Content);
    $Content = Parse_Tag_KALIN_Recursive($Content);
    $Content = Parse_Tag_BUYUK_Recursive($Content);
    
    echo $Content;
    ?>
  • 04-06-2009, 00:02:33
    #9
    uysal_rockci adlı üyeden alıntı: mesajı görüntüle
    evet o tarz bişey @LaCReMeL, sağol.
    ama [TAG] [/TAG] arası için nasıl düzenleyebilirim bunu acaba ?
    <?php
    $metin = "ali [tag] kaliiiiiin[/tag] veli ";
    preg_match_all("@\[tag\](.*?)\[/tag\]@i",$metin,$cikti);
    print_r($cikti[1]);
    ?>