• 30-12-2008, 01:17:06
    #1
    $texy = preg_replace('/\`(.*?)\`/i', '<a href="http://www.sitem.com/$1">$1</a>', $texy);

    $texy = preg_replace_callback(
    '#(<a href="http://www.*/)([^"]*)(">.*</a>)#i',
    create_function('$matches', 'return $matches[1].str_replace(array(" ","ğ","ç","I","ı","ü","ö","ş","--","_","+","<a target=_blank href=","%20"), array("-","g","c","i","i","u","o","s","-","-","-","","-"), $matches[2])."".$matches[3];'),
    $texy);

    kodlar yuardaki gibi amacım `bişigir` şeklinde yazıldında bunu
    <a href=sitem.com/bisigir">bişigir</a> şeklinde değiştirmeye calısıyorum
    preg_replace ile önce link yaptım, preg_replace_callback ile url kısmındaki kelimeyi url şeklinde ( türkçeleri kaldırdım ). kod işe yarıyor ama bunu aynı texy de 5 6 kere kullanınca bazısında cıkıyor bazısında cıkmıyor.
    örnek:
    `bişigir``bişigir``bişigir``bişigir`
    bu şekil 4 kere yazıyorum. hepsi link şekline geliyor fakat sadece 4. sü türçe url link oluyor. diğer 3 ü direk türkçe metin (/bişigir) şeklinde oluyor

    preg_replace_callback(
    '#(<a href="http://www.*/)([^"]*)(">.*</a>)#i',

    buradaki parametrelerde bi problem var galiba . yardımcı olabilecek var mı ?
    ve ya bu isteğimi daha farklı nasıl yaparım.
  • 30-12-2008, 21:30:17
    #2
    ve ya sorumu şöle değiştiriyim.
    `bişisöyle` bir mesaj gönderme içinde bu şekil `` arasına bişi yazıldığında bunu otomatik link yapıcak
    <a href=http://www.sitem.com/tag/bisisoyle>bişisöyle</a>
    nasıl bu hale getirebilirim
  • 30-12-2008, 22:23:47
    #3
    LaXoR adlı üyeden alıntı: mesajı görüntüle
    ve ya sorumu şöle değiştiriyim.
    `bişisöyle` bir mesaj gönderme içinde bu şekil `` arasına bişi yazıldığında bunu otomatik link yapıcak
    <a href=http://www.sitem.com/tag/bisisoyle>bişisöyle</a>
    nasıl bu hale getirebilirim
    $message = "bişi yazıldığında bunu otomatik link yapıcak `bişisöyle` bir mesaj gönderme içinde bu şekil";
    echo preg_replace('/`(.*)`/e', 'handle_atag(\'$1\')', $message);
    
    function handle_atag( $text ){
     return "<a href=\"http://www.sitem.com/tag/".seo_title($text)."\">$text</a>";
    }
    
    function seo_title( $title ){
     return preg_replace("/[^A-Za-z0-9_-]/e", "", strtolower( strtr($title, "İĞÜŞÖÇığüşöç /\\&", "igusocigusoc-___") ));
    }
    bu şekilde yapabilirsin.
  • 30-12-2008, 22:53:42
    #4
    fabal adlı üyeden alıntı: mesajı görüntüle
    $message = "bişi yazıldığında bunu otomatik link yapıcak `bişisöyle` bir mesaj gönderme içinde bu şekil";
    echo preg_replace('/`(.*)`/e', 'handle_atag(\'$1\')', $message);
     
    function handle_atag( $text ){
     return "<a href=\"http://www.sitem.com/tag/".seo_title($text)."\">$text</a>";
    }
     
    function seo_title( $title ){
     return preg_replace("/[^A-Za-z0-9_-]/e", "", strtolower( strtr($title, "İĞÜŞÖÇığüşöç /\\&", "igusocigusoc-___") ));
    }
    bu şekilde yapabilirsin.
    teşekkürler hocam yardımın için oldu isteidğim gibi ama bi sorun cıktı
    `deneme``mesajmı``burası`
    bu şekil yazdığımda 3 link vermesi gerekirken hepsine 1 link veriyor
    ve ya `bişisöyle` arada boşluk bişiler var `bişisöyle` olunca komple metni alıyor link veriyor
  • 30-12-2008, 23:34:51
    #5
    Bu şekilde olmaz ikiside farklı olmalı mesala şu şekilde <linkyap>Link yapılacak</linkyap> şeklinde degişkenler kullan.
  • 30-12-2008, 23:37:25
    #6
    LaXoR adlı üyeden alıntı: mesajı görüntüle
    teşekkürler hocam yardımın için oldu isteidğim gibi ama bi sorun cıktı
    `deneme``mesajmı``burası`
    bu şekil yazdığımda 3 link vermesi gerekirken hepsine 1 link veriyor
    ve ya `bişisöyle` arada boşluk bişiler var `bişisöyle` olunca komple metni alıyor link veriyor
    Parantez içi değerini [^\']* yapın.

    İyi çalışmalar.
  • 30-12-2008, 23:58:04
    #7
    yok bu sefer komple metni sildi o içerideki değeri
  • 30-12-2008, 23:58:51
    #8
    $message = "'bişigir''bişer''bişigir''bişigir'";

    $message = preg_replace('/\'([^\']*)\'/', '<a href="sitem.com/$1">$1</a>', $message);
    echo $message;

    fonksiyondan geçirirsiniz link için...
  • 31-12-2008, 00:24:40
    #9
    jetblack adlı üyeden alıntı: mesajı görüntüle
    $message = "'bişigir''bişer''bişigir''bişigir'";

    $message = preg_replace('/\'([^\']*)\'/', '<a href="sitem.com/$1">$1</a>', $message);
    echo $message;

    fonksiyondan geçirirsiniz link için...
    tmm teşekkürler
    ([^\']*) içinde ' bu var yanlış işaret o yüzden olmuş , ` bunu koydum düzeldi
    teşekkürler


    WebLOADER adlı üyeden alıntı: mesajı görüntüle
    Bu şekilde olmaz ikiside farklı olmalı mesala şu şekilde <linkyap>Link yapılacak</linkyap> şeklinde degişkenler kullan.
    teşk hocam ilgilendiğin için
    sorun çözüldü, saolun