• 16-12-2015, 10:46:44
    #1
    merhaba arkadaşlar;
    Bir sorunum var. Şöyle anlatayım. bir içerik var. ben bu içeriğin belli bir yerini örneğin <blockquote>(.*?)<\/blockquote> tagları arasını preg_replace alıyorum. str_replace fonksiyonu ile de yalnızca preg_replace ile aldığım kısım üzerinde değişiklikler yapmak istiyorum. aşağıya örnek kod ekliyorum.

    $icerik = '
    <blockquote><p><em>"bu deneme bir içeriktir 1"</em></p></blockquote>
    <p>bu deneme bir içeriktir 2</p>
    ';
    
    
    function kullan20($text){
    $gkod  = array(
    "<em>"
    );
    $dkod = array(
    "<ssem>"
    );
    $ykod = str_replace($gkod,$dkod,$text);
    return $ykod;
    }
    
    
    function icerikbul($temizleme){
    $result1 = preg_replace('/<blockquote>(.*?)<\/blockquote>/', " ".kullan20("\\1")."", $temizleme);
    return $result1;
    }
    
    echo  icerikbul($icerik);
    burada icerikbul fonksiyonu ile $icerik değişkeni içindeki <blockquote>(.*?)<\/blockquote> kısmını alıyorum. aldığım yer \\1 olarak yazıyorum. \\1 üzerinde function kullan20 fonksiyonunu çalıştırdığımda function kullan20 fonkiyonu buna etki etmiyor. oluşturduğum kullan20 fonksiyonun \\1 değişkenine nasıl etki edebilirim. Lütfen birisi Allah rızası için yardım etsin.

    --R10.NET; Flood Engellendi -->-> Yeni yazılan mesaj 10:46:44 -->-> Daha önceki mesaj 09:59:42 --

    arkadaşlar sorunu hallettim. olur da ihtiyacı olan olur bir gün faydam olsun.

    $result = preg_replace_callback("/<blockquote>(.*?)<\/blockquote>/isU", function($m) { return kullan20($m[1]); },$icerik);
    bu fonsiyon sorunumu halletti.
  • 16-12-2015, 12:28:25
    #2
    gittiğiniz yol için çözümü bulmuş olmanız güzel. kullan20 içerisinde açılan em tagını ssem şeklinde değiştirmişsiniz fakat kapanışları değiştirmemişsiniz.

    özellikle öyle bırakmadıysanız ki umarım bırakmamışsınızdır, orayı da bir kontrol etmenizi öneririm.

    $out = str_replace(array('</blockquote>', '</em>'), array('', '</semm>'), $icerik);
    $out = preg_replace(array('`(<blockquote)([^\w])`i', '`(<em)([^\w])`i'), array("", "<semm$2"), $out);
    şöyle de yapılabilir.

    kolaylıklar.

    aslan002 adlı üyeden alıntı: mesajı görüntüle
    merhaba arkadaşlar;
    Bir sorunum var. Şöyle anlatayım. bir içerik var. ben bu içeriğin belli bir yerini örneğin <blockquote>(.*?)<\/blockquote> tagları arasını preg_replace alıyorum. str_replace fonksiyonu ile de yalnızca preg_replace ile aldığım kısım üzerinde değişiklikler yapmak istiyorum. aşağıya örnek kod ekliyorum.

    $icerik = '
    <blockquote><p><em>"bu deneme bir içeriktir 1"</em></p></blockquote>
    <p>bu deneme bir içeriktir 2</p>
    ';
    
    
    function kullan20($text){
    $gkod  = array(
    "<em>"
    );
    $dkod = array(
    "<ssem>"
    );
    $ykod = str_replace($gkod,$dkod,$text);
    return $ykod;
    }
    
    
    function icerikbul($temizleme){
    $result1 = preg_replace('/<blockquote>(.*?)<\/blockquote>/', " ".kullan20("\\1")."", $temizleme);
    return $result1;
    }
    
    echo  icerikbul($icerik);
    burada icerikbul fonksiyonu ile $icerik değişkeni içindeki <blockquote>(.*?)<\/blockquote> kısmını alıyorum. aldığım yer \\1 olarak yazıyorum. \\1 üzerinde function kullan20 fonksiyonunu çalıştırdığımda function kullan20 fonkiyonu buna etki etmiyor. oluşturduğum kullan20 fonksiyonun \\1 değişkenine nasıl etki edebilirim. Lütfen birisi Allah rızası için yardım etsin.

    --R10.NET; Flood Engellendi -->-> Yeni yazılan mesaj 10:46:44 -->-> Daha önceki mesaj 09:59:42 --

    arkadaşlar sorunu hallettim. olur da ihtiyacı olan olur bir gün faydam olsun.

    $result = preg_replace_callback("/<blockquote>(.*?)<\/blockquote>/isU", function($m) { return kullan20($m[1]); },$icerik);
    bu fonsiyon sorunumu halletti.
  • 16-12-2015, 13:10:37
    #3
    bluexpres adlı üyeden alıntı: mesajı görüntüle
    gittiğiniz yol için çözümü bulmuş olmanız güzel. kullan20 içerisinde açılan em tagını ssem şeklinde değiştirmişsiniz fakat kapanışları değiştirmemişsiniz.

    özellikle öyle bırakmadıysanız ki umarım bırakmamışsınızdır, orayı da bir kontrol etmenizi öneririm.

    $out = str_replace(array('</blockquote>', '</em>'), array('', '</semm>'), $icerik);
    $out = preg_replace(array('`(<blockquote)([^\w])`i', '`(<em)([^\w])`i'), array("", "<semm$2"), $out);
    şöyle de yapılabilir.

    kolaylıklar.
    hocam kod içeriklerini tamamen rasgele yazdım. kullandığım sistemle alakası yok. amaç sorunu izah edebilmekti. ilginiz için teşekkür ederim
  • 18-06-2016, 09:03:06
    #4
    .


    Sent from my iPad using Tapatalk