• 18-02-2015, 11:11:53
    #1
    Merhabalar arkadaşlar,

    kelimeleri değiştirmek isterken bir yerde sıkıntı çekiyorum.

    Sıkıntı şu,


    str_replace("aranan","degisen","metin");

    şeklindeki yapımda aranan kelime örneğin, resim olsun değişen yapı ise,

    <a href="resimler.net">resim</a>


    ama gelen metinde <img src="http://www.aaaa.com/resim/aaaa.jpg">

    var ise bu sefer resim src kısmına link basıyor ve resim çıkmıyor.


    bu yapının çıktısı aşağıdaki gibidir.
    <img src="http://www.aaaa.com/<a href="resimler.net">resim</a>/aaaa.jpg
    bunu nasıl engelleyebilirim.

    teşekkür ederim.
  • 18-02-2015, 12:01:50
    #2
    PiEycPi adlı üyeden alıntı: mesajı görüntüle
    Merhabalar arkadaşlar,

    kelimeleri değiştirmek isterken bir yerde sıkıntı çekiyorum.

    Sıkıntı şu,


    str_replace("aranan","degisen","metin");

    şeklindeki yapımda aranan kelime örneğin, resim olsun değişen yapı ise,

    <a href="resimler.net">resim</a>


    ama gelen metinde <img src="http://www.aaaa.com/resim/aaaa.jpg">

    var ise bu sefer resim src kısmına link basıyor ve resim çıkmıyor.


    bu yapının çıktısı aşağıdaki gibidir.
    <img src="http://www.aaaa.com/<a href="resimler.net">resim</a>/aaaa.jpg
    bunu nasıl engelleyebilirim.

    teşekkür ederim.
    Ben yazdığınızdan hiçbir şey anlamadım, kodlarınızı paylaşırsanız yardımcı olalım
    • PiEycPi
    PiEycPi bunu beğendi.
    1 kişi bunu beğendi.
  • 18-02-2015, 12:02:44
    #3
    PiEycPi adlı üyeden alıntı: mesajı görüntüle
    Merhabalar arkadaşlar,

    kelimeleri değiştirmek isterken bir yerde sıkıntı çekiyorum.

    Sıkıntı şu,


    str_replace("aranan","degisen","metin");

    şeklindeki yapımda aranan kelime örneğin, resim olsun değişen yapı ise,

    <a href="resimler.net">resim</a>


    ama gelen metinde <img src="http://www.aaaa.com/resim/aaaa.jpg">

    var ise bu sefer resim src kısmına link basıyor ve resim çıkmıyor.


    bu yapının çıktısı aşağıdaki gibidir.
    <img src="http://www.aaaa.com/<a href="resimler.net">resim</a>/aaaa.jpg
    bunu nasıl engelleyebilirim.

    teşekkür ederim.
    str yerine preg ile yapabilirsin aşağıdaki örnekteki gibi.

    echo preg_replace('/<a href="(.*)">(.*)</a>/','<a href="$1">degisen</a>',"metin");
  • 18-02-2015, 12:48:54
    #4
    Misafir adlı üyeden alıntı: mesajı görüntüle
    Ben yazdığınızdan hiçbir şey anlamadım, kodlarınızı paylaşırsanız yardımcı olalım
    yvolkan adlı üyeden alıntı: mesajı görüntüle
    str yerine preg ile yapabilirsin aşağıdaki örnekteki gibi.

    echo preg_replace('/<a href="(.*)">(.*)</a>/','<a href="$1">degisen</a>',"metin");
    Tam olarak kullandığım yapı.

    $result = str_replace(array_map('maskit',array_keys($arr)),a rray_values($arr),$text);
  • 18-02-2015, 14:49:34
    #5
    PiEycPi adlı üyeden alıntı: mesajı görüntüle
    Tam olarak kullandığım yapı.

    $result = str_replace(array_map('maskit',array_keys($arr)),a rray_values($arr),$text);
    echo preg_replace('/<a href="(.*)">(.*)</a>/','<a href="$1">'.array_values($arr).'</a>',$text);
    bu şekilde nasıl sonuç alıyorsun acaba
  • 20-02-2015, 10:36:00
    #6
    yvolkan adlı üyeden alıntı: mesajı görüntüle
    echo preg_replace('/<a href="(.*)">(.*)</a>/','<a href="$1">'.array_values($arr).'</a>',$text);
    bu şekilde nasıl sonuç alıyorsun acaba
    Merhabalar hocam,
    ekrana herhangi bir veri basmamaktadır.
  • 20-02-2015, 14:41:13
    #7
    Developer
    <?php
    $veri = '<img src="http://www.aaaa.com/resim/aaaa.jpg">';
    $veri2 = 'resim';
    
    
    function CustomSTR($aranan,$degisen,$metin){
    $sonuc = strpos($metin,"img");
    if($sonuc === false){
    return str_replace($aranan,$degisen,$metin);
    }
    }
    
    echo CustomSTR('resim','<a href="resimler.net">resim</a>',$veri2);
    echo CustomSTR('resim','<a href="resimler.net">resim</a>',$veri);
    
    ?>


    --R10.NET; Flood Engellendi -->-> Yeni yazılan mesaj 14:41:13 -->-> Daha önceki mesaj 14:08:50 --

    Sanırım işine bu yarayacak;

    class replaceIfNotInsideTags {
     
      private function checkOpenTag($matches) {
        if (strpos($matches[0], '<') === false) {
          return $matches[0];
        } else {
          return '<a href="'.$matches[1].'">'.$matches[1].'</a>'.$this->doReplace($matches[2]);
        }
      }
     
      private function doReplace($html) {
       return preg_replace_callback('/(\b'.$this->word.'\b)(.*?>)/i',
                                     array(&$this, 'checkOpenTag'),
                                     $html);
      }
     
      public function replace($html, $word) {
        $this->word = $word;
     
        return $this->doReplace($html);
      }
    }
     
    $html = 'resim ve <img src="http://www.aaaa.com/resim/aaaa.jpg" />';
     
    $obj = new replaceIfNotInsideTags();
    
    echo $obj->replace($html, 'resim');