• 05-03-2013, 20:27:59
    #10
    Üyeliği durduruldu
    diaboluss adlı üyeden alıntı: mesajı görüntüle
    Mümkün değilmi bende sana gülüyorum hocam daha önce o kod ile yaptığım şeye mümkün değil dedin ya yetti tamam kolay gelsin..
    gülmenize gerek yok. Şükür str_replace ne iş yapar biliyorum. ama ben halen olmayacağını iddia ediyorum. Neden olduğunu şu alıntının altındaki mesajıma bakarak görebilirsiniz.

    Hayko adlı üyeden alıntı: mesajı görüntüle
    Şöyle birşey öneriyim o zaman.

    Metinde değişiklik yapılacak kelimeler bellidir illaki.

    Önce bunların hepsini bir diziyi karakter sayısına göre alın.

    Örneğin,

    $kelimeler[] = 'video'; $linkler[] = 'http://site1.com';
    $kelimeler[] = 'videolar'; $linkler[] = 'http://site2.com';
    $kelimeler[] = 'videocunuz'; $linkler[] = 'http://site3.com';
    $kelimeler[] = 'benim videolarım'; $linkler[] = 'http://site4.com';
    Daha sonra for döngüsü ile metni değiştirelim tek tek.


    for($i=0;$i<count($kelimeler);$i++)
        $metin = str_replace($kelimler[$i],'<a href="'.$linkler[$i].'">'.$kelimler[$i].'</a>',$metin);
    Bu şekilde çalışması lazım.



    Arkadaş zaten yardım istemiş gülmenizi değil. Bende ilk yazdığınızda mümkün olamayacağını düşünüyordum str_replace ile fakat öyle bir yazdınız ki nasıl yaptığınızı merak ettim

    Tamam dizdik diyelim.

    Videolarım
    Videolar
    Video

    Videolarım kelimesi şöyle oldu

    <a href="adres1.com">Videolarım</a>

    Sıra Geldi Videolar kelimesine

    Normal metin içndeki Videolar ile az önce değiştirdiği ve

    <a href="adres1.com">Videolarım</a>

    halini verdiği metindeki videolar kelimesi ne olacak?

    <a href="adres1.com">Videolarım</a>

    linki

    <a href="adres1.com"><a href="adres2.com">Videolar</a>ım</a>

    halini alacak. benim sıkıştığım nokta tam da bu.

    işlem gören kelimeye link vermemesi gerekiyor.

    Tam tersi kısadan uzuna dizsek bu sefer de

    video kelimesi varken

    videolar
    videolarim
    videocularim

    gibi kelimelere hiç link ekleyemeyecek.
  • 08-04-2013, 07:09:13
    #11
    Bir aydan fazla geçmiş gerçi ama belki işinizi görür @spider58; hocam,

    Veritabanı:



    Kodlar:

    class kelime extends PDO{
    	private $kelimeler;
    	private $sayac;
    	private $etkilenen;
    	private $link;
    	
    	public function __construct(){
    		parent::__construct('mysql:host=localhost;dbname=test', 'root','');
    		$this->query("SET NAMES UTF8;SET character_set_client = 'utf8';SET character_set_results = 'utf8';SET character_set_connection = 'utf8';");
    		$this->sayac = 0;
    		$this->etkilenen = 0;
    		$this->link = array();
    		$this->kelimeler();
    	}
    	
    	private function kelimeler(){
    		$s = $this->prepare("SELECT kelime, url FROM kelimeler ORDER BY CHAR_LENGTH(kelime) DESC");
    		$s->execute();
    		$this->kelimeler = $s->fetchAll(PDO::FETCH_OBJ);
    		return $this->kelimeler;
    	}
    	
    	public function linkle($cumle){
    		
    		foreach($this->kelimeler as $k){
    			$cumle = str_ireplace($k->kelime,"[![!{$this->sayac}!]!]",$cumle,$this->etkilenen);
    			if($this->etkilenen > 0){
    				$this->link[$this->sayac]['kelime'] = $k->kelime;
    				$this->link[$this->sayac]['url'] = $k->url;
    				$this->sayac++;
    				$this->etkilenen = 0;
    			}
    		}
    		
    		if($this->sayac > 0){
    			for($this->sayac--;$this->sayac>=0;$this->sayac--){
    
    				$x = '<a href="'.$this->link[$this->sayac]['url'].'">'.$this->link[$this->sayac]['kelime'].'</a>';
    				$cumle = str_ireplace("[![!{$this->sayac}!]!]",$x,$cumle);
    			}
    		}
    		
    		return $cumle;
    	}
    }
    
    $cumle = "Merhaba ziyaretçi. Sitemizdeki her türlü video sizler için özenle seçildi. Bu videoları güvenle izleyebilirsiniz. Benim videolarım bölümünden kendi videonuzu upload edebilirsiniz.";
    $kelime = new kelime();
    echo $kelime->linkle($cumle);
    Çıktı:

    Alıntı
    Merhaba ziyaretçi. Sitemizdeki her türlü video sizler için özenle seçildi.
    Bu videoları güvenle izleyebilirsiniz. benim videolarım bölümünden kendi videonuzu upload edebilirsiniz.
  • 10-04-2013, 19:19:45
    #12
    Üyeliği durduruldu
    bayGaReZ adlı üyeden alıntı: mesajı görüntüle
    Bir aydan fazla geçmiş gerçi ama belki işinizi görür @spider58; hocam,

    Veritabanı:



    Kodlar:

    class kelime extends PDO{
        private $kelimeler;
        private $sayac;
        private $etkilenen;
        private $link;
        
        public function __construct(){
            parent::__construct('mysql:host=localhost;dbname=test', 'root','');
            $this->query("SET NAMES UTF8;SET character_set_client = 'utf8';SET character_set_results = 'utf8';SET character_set_connection = 'utf8';");
            $this->sayac = 0;
            $this->etkilenen = 0;
            $this->link = array();
            $this->kelimeler();
        }
        
        private function kelimeler(){
            $s = $this->prepare("SELECT kelime, url FROM kelimeler ORDER BY CHAR_LENGTH(kelime) DESC");
            $s->execute();
            $this->kelimeler = $s->fetchAll(PDO::FETCH_OBJ);
            return $this->kelimeler;
        }
        
        public function linkle($cumle){
            
            foreach($this->kelimeler as $k){
                $cumle = str_ireplace($k->kelime,"[![!{$this->sayac}!]!]",$cumle,$this->etkilenen);
                if($this->etkilenen > 0){
                    $this->link[$this->sayac]['kelime'] = $k->kelime;
                    $this->link[$this->sayac]['url'] = $k->url;
                    $this->sayac++;
                    $this->etkilenen = 0;
                }
            }
            
            if($this->sayac > 0){
                for($this->sayac--;$this->sayac>=0;$this->sayac--){
    
                    $x = '<a href="'.$this->link[$this->sayac]['url'].'">'.$this->link[$this->sayac]['kelime'].'</a>';
                    $cumle = str_ireplace("[![!{$this->sayac}!]!]",$x,$cumle);
                }
            }
            
            return $cumle;
        }
    }
    
    $cumle = "Merhaba ziyaretçi. Sitemizdeki her türlü video sizler için özenle seçildi. Bu videoları güvenle izleyebilirsiniz. Benim videolarım bölümünden kendi videonuzu upload edebilirsiniz.";
    $kelime = new kelime();
    echo $kelime->linkle($cumle);
    Çıktı:
    hocam çok teşekkürler. en kısa zamanda denerim.