WordPress Arama Algoritması

Sizler için wordpress arama algoritmasını analiz edip sistemin nasıl çalıştığını göstermek için mini bir fonksiyon hazırladım.

<?php 
header('Content-Type: text/html; charset=utf-8');
function arama($veri,$limit){
 mb_internal_encoding("UTF-8");
 $limit=" LIMIT ".$limit;
 if(!empty($veri))
 $q=mysql_real_escape_string(implode(" ",array_unique(array_filter(array_map('trim',explode(',',mb_strtolower(stripslashes($veri))))))));
 $sql="SELECT * FROM makale 
 WHERE baslik LIKE '%".$q."%' OR icerik LIKE '%".$q."%'
 ORDER BY (
 CASE 
 WHEN baslik LIKE '%".$q."%' THEN 1 
 WHEN icerik LIKE '%".$q."%' THEN 2 
 ELSE 3
 END
 ),id DESC ".$limit;
 return $sql;
}
echo arama("php",10);
/*Çıktısı
SELECT * FROM makale 
WHERE baslik LIKE '%php%' OR icerik LIKE '%php%' 
ORDER BY ( CASE WHEN baslik LIKE '%php%' THEN 1 WHEN icerik LIKE '%php%' THEN 2 ELSE 3 END ),id DESC 
LIMIT 10
*/
?>

 

Php Nedir?

 

Herkese Merhaba,
PHP dilini kısaca, dinamik web sayfaları hazırlamak için geliştirilmiş web tabanlı programlama dili olarak tanımlayabiliriz.Server taraflı çalışan bir betik dildir.Açılımı Hypertext Preprocessor (Üstün yazı ön işlemcisi)’dür.
1995 yılında Kanadalı yazılımcı Rasmus Lerdorf tarafından oluşturulmuştur. Lerdorf ilk zamanlarda sayfasına gelen ziyaretçilerin sayısını tutmak için yazdığı Perl scriptleriyle bir nevi PHP‘nin temellerini atmış oldu.Yıllar sonra PHP, C dili ile tekrar kodlanmıştır.Bu eğitim setinde anlatınlar HTML , CSS ve Javascript dillerini bildiğiniz varsayılarak anlatılacaktır.
PHP ile yapılabilecek şeyleri saymak neredeyse mümkün değildir.Dilerseniz yapısında barındıran büyük web sayfalarına bakalım.
*http://www.google.com
*http://www.twitter.com
*http://www.facebook.com
*http://www.wikipedia.com
*http://www.travian.com
PHP Kullanmanın Avantajları Nelerdir?
*PHP açık kaynak lisansına sahiptir (GNU) dolayısıyla kullanırken bir ücret ödemeniz gerekmez.
*Basit söz dizimi dolayısıyla öğrenimi kolaydır.
*Birçok veritabanı yönetim sistemiyle beraber çalışabilir.
*Derlemeye ihtiyaç yoktur.Bir not defteri ile bile PHP kodu yazabilirsiniz.
PHP Nasıl Çalışır ?
PHP derlemeye ihtiyaç duymaz. Serverda PHP yorumlayıcısı php komutlarını okur ve bize html çıktı olarak sunar.Bir tarayıcıda öğeyi denetle seçeneğini kullanarak php kodlarına ulaşılamaz.Çıktı phpnin yorumlanmasıyla elde edilmiş html komutlardan ibarettir.
SYNTAX
Php komutları <?php tagıyla başlayan ve ?> tagıyla son bulan bloğun arasına yazılır.Genellikle her satırdan sonra “;” kullanılır.Ekrana çıktı basmak için genelde echo komutu kullanılır.

<?php
echo "Merhaba Dünya !";
?>

YORUM SATIRLARI
Php yorumlayıcısı bize kodların arasına yorum ekleme seçeneği sunmaktadır. Geli hep birlikte bunlara göz atalım.

<?php
#TEK SATIRLIK BİR YORUM
//TEK SATIRLIK BİR YORUM
/* ÇOK SATIRLI
BİR YORUM */
?>

Bu şekilde yazdığımız yorumlar PHP motoru tarafından yorumlanmaz.Kodu daha sonra incelerken daha iyi anlamak ve diğer geliştiricilere kendimizi daha iyi anlatmak adına yorum satırlarını kullanmak gerekir.
Şimdilik esen kalın!

Seo Sef Link

Ünlü sitelerce kullanılmış olan yapıyı sizlerle paylaşıyorum

<?php
function seflink($s) {
    $tr = array('ş','Ş','ı','İ','ğ','Ğ','ü','Ü','ö','Ö','Ç','ç','&amp;');
    $eng = array('s','s','i','i','g','g','u','u','o','o','c','c','');
    $s = str_replace($tr,$eng,$s);
    $s = strtolower($s);
    $s = preg_replace('/&amp;amp;amp;amp;amp;amp;amp;amp;amp;.+?;/', '', $s);
    $s = preg_replace('/[^%a-z0-9 _-]/', '', $s);
    $s = preg_replace('/\s+/', '-', $s);
    $s = preg_replace('|-+|', '-', $s);
    $s = trim($s, '-');
    return $s;
}


//Örneğin


echo seflink("Çünkü & sizler yenilikçisiniz");

//Çıktısı "cunku-sizler-yenilikcisiniz"

?>

Önbellekleme

Her seferinde aynı içeriğe sahip olan sayfalarınızı önbellekleyerek hem veritabanınıza olan bağlantıları azaltır, hemde sayfaları daha hızlı yüklersiniz.

Cache çalışma mantığı php sayfalarınızı html olarak saklayıp, sonraki seferde html olarak görüntülemesidir.

<?php
header('Content-Type: text/html; charset=utf-8');
class onbellek{//PHPSTATE ÖNBELLEK SINIFI
	public $zamanasimi=300;
	var $sorgu;
	var $dosya;
	var $soket;
	var $baslangic;
	var $bitis;
	function mikrosure(){
		list($usure, $sure) = explode(" ",microtime()); 
		return ((float)$usure + (float)$sure);
	}
	function kontrol(){
		$this->baslangic=0;
		$this->bitis=0;
		$this->baslangic=$this->mikrosure();
		if ($this->sorgu == ''){$this->soket = 1;return 1;}
		$this->dosya = $this->sorgu.'.onbellek'; 
		 if ((time()-@filemtime($this->dosya)) > $this->zamanasimi) { 
			 $this->soket = true;
			 return true;  
		 }else {      
			 $this->soket = false;         
			 return false;  
		 }
	 }
	function baslat(){
		if ($this->soket) {@ob_start();}       
	}
	function bitir(){
		if ($this->soket){
			$icerik = @ob_get_contents();
			@ob_end_clean();
			if ($f = @fopen($this->dosya, "wb")){
				@fwrite($f, $icerik);
				@fclose($f);
			}
			echo $icerik;
		}
	}
	function icerik(){
		@readfile($this->dosya);
	} 
	function bosalt(){
		@unlink($this->sorgu.'.onbellek');
		return $this->sorgu.'.onbellek';
	}
	function zaman(){
		$this->bitis=$this->mikrosure();
		if(($this->bitis - $this->baslangic) < 1){
			return (($this->bitis - $this->baslangic)*1000)." milisaniye";
		}else{
			return ($this->bitis - $this->baslangic)." saniye";
		}
	}
}


////////////////ÖRNEK////////////////////////

$onbellek = new onbellek();
$onbellek->sorgu = '100000 test';//onbellek dosya adı 

if(isset($_GET["temizle"])){//TEMİZLEME SORGUSU
	die($onbellek->bosalt().' Temizlendi <a href="?" >Normali Göster</a>');
}else{//SAYFA GÖSTERİMİ BAŞLATILIYOR
	
	if ($onbellek->kontrol()){
		echo "Önbellek Yok"."<br>";
		$onbellek->baslat();
?>
		
<?php 
//PHP SAYFA KODLARIMIZIN BAŞLANGICI/////////////////////////////////////////////////
		for ($i=1; $i<100000; $i++) {
			echo $i.'-';
		}
//PHP SAYFA KODLARIMIZIN BİTİŞİ///////////////////////////////////////////////// 
?>
		
<?php
		$onbellek->bitir();
	}else{
		echo "Önbellek Var"."<br>";
		$onbellek->icerik();
	} 
	echo '<hr /><br />'.$onbellek->sorgu.' Oluşturulma '.$onbellek->zaman().' <a href="?">Yenile</a> ya da <a href="?temizle=ok">Temizle</a>';
}
?>

 

Youtube Mp4 Downloader

Aşadaki uygulamada videolarınızı desteklediği kadarıyla maximum 720p çözünürlükte mp4 olarak indirebilirsiniz.

<?php

function youtube_mp4_downloader($ytid){
	//07.02.2015 00:40 || phpstate.ulusanyazilim.com || ulusanyazilim@gmail.com
	$yturl = 'http://www.youtube.com/get_video_info?&video_id='.$ytid.'&asv=3&el=detailpage&hl=tr_TR';
	$ch = curl_init();
	curl_setopt($ch,CURLOPT_URL,$yturl);
	curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
	curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,30);
	parse_str(curl_exec($ch));
	curl_close($ch);
	foreach(explode(',',$url_encoded_fmt_stream_map) as $format) {
		if($itag == 22){$itag=22;}elseif($itag == 18){$itag=18;}else{$itag="";}
		parse_str($format);
		$url= urldecode($url) . '&signature=' . $sig;
		if($itag == 22 or $itag == 18){break;}
	}
	
	return $url.'&title='.preg_replace('/[^a-üöçşığz A-ÜÖÇŞİĞZ 0-9\-]/','',str_replace(' ','-',$title));
}



//Örnek Kullanım
//https://www.youtube.com/watch?v=Q_wWkc3O4ug için
//ob_start();
//header("Location: ".youtube_mp4_downloader("Q_wWkc3O4ug"));
ob_start();
header("Location: ".youtube_mp4_downloader($_GET["id"]));
?>

 

Gelişmiş İçerik Resmi

<?php 
function onizleme($makale,$maxGenislik,$maxYukseklik){
	$makale=htmlspecialchars_decode($makale);
	preg_match_all('/<img.+src="([^"]*)".*>/', $makale, $sonuc);
	$link=$sonuc[1][0];
	if(!empty($link)){
		$img=iconv('ISO-8859-1', 'UTF-8//TRANSLIT//IGNORE', $link);//tr karakter problemi için
		list($Genislik,$Yukseklik) = @getimagesize($img);//olmayan bir dosya deneyin diye @ koydum
	}else{
		list($Genislik,$Yukseklik) = array(100,100);//sabit
	}
    if($Genislik>$Yukseklik){//yükseklik ölçekle
		$list=array($maxGenislik,($Yukseklik * ($maxGenislik / $Genislik)));
    }
    elseif($Yukseklik>$Genislik){//genişlik ölçekle
		$list=array(($Genislik * ($maxYukseklik / $Yukseklik)),$maxYukseklik);
    }else{//her ikisinide ölçekle
		$list=array($maxGenislik,$maxYukseklik);
	}
	if(!empty($link)){
		return '<img src="'.$link.'" height="'.$list[1].'" width="'.$list[0].'" />';
	}else{
		return '<img src="noimages.jpg" height="'.$list[1].'" width="'.$list[0].'" />';
	}
}
//Örnek Kullanım
$makale='bu <img src="abcd.jpg"\> en sevdiğim resim';
echo onizleme($makale,110,100); //110px/100px resim önizlemesi sunar

 

Kullanıcı Adı Deseni

<form method="post"><input type="text" name="username"><input type="submit"></form>
<?php
function user_kontrol($user){
	if(!empty($user)){//boş değilse
		if (!preg_match("/[a-üöçşığzA-ÜÖÇŞİĞZ0-9._-]/",$user)) {//sadece harf rakam ve ._- karakterleri içerebilir.
			return false;
		}else{
			if (!preg_match("/[a-üöçşığzA-ÜÖÇŞİĞZ]/",mb_substr($user,0,1,'UTF-8'))) {//ilk karakter sadece harf olmalı
				return false;
			} 
		}
	}
	return true;
}

if(user_kontrol($_POST["username"])){
echo "Uygun Kullanıcı Adı";
}else{
echo "Hatalı Karakter Sistemi Kullanımı";
}

 

Rakamı Yazıya Çevirme Sınıfı ile Sayıların Türkçe Okunuşu

<?php 
$bir = array("","bir ","iki ","üç ","dört ","beş ","altı ","yedi ","sekiz ","dokuz ");
$on = array("","on ","yirmi ","otuz ","kırk ","elli ","atmış ","yetmiş ","seksen ","doksan ");
$ek = array("", "yüz ","bin ","milyon ","milyar ","trilyon ","katrilyon ","kentilyon ","seksilyon ","septilyon ","oktilyon ");
function uclu($rakam){//sayıyı 3lü hane olarak okutuyoruz
 global $bir,$on,$ek;
 if(strlen($rakam)==1){ return $bir[substr($rakam,0,1)];}
 if(strlen($rakam)==2){ return $on[substr($rakam,0,1)]." ".$bir[substr($rakam,1,1)];}
 if(strlen($rakam)==3){ 
 if(substr($rakam,0,1) > 0){//yüzler hanesinde 0
 if(substr($rakam,0,1) == 1){//yüzler hanesinde 1 problemi
 $yuzler=$ek[1];
 }else{
 $yuzler=$bir[substr($rakam,0,1)].$ek[1];
 }
 }else{
 $yuzler=$bir[substr($rakam,0,1)];
 }
 return $yuzler." ".$on[substr($rakam,1,1)]." ".$bir[substr($rakam,2,1)];
 }
}
function okut($n){
 global $bir,$on,$ek;
 $ns=explode(',',number_format($n));//3lü diziye ayırdık
 for($i=0;$i<count($ns);$i++){//3 lü diziyi döndür
 $j=(count($ns)-$i);//3 lü hangi eke ait?
 if($j > 1){//son $j ek içermez engeli
 if($ns[$i] == 1 and $ek[$j] == "bin "){//bir bin bugu için
 echo $ek[$j]." ";
 }else{
 if($ns[$i] != "000"){//1000123 bin eki tarzı bug
 echo uclu($ns[$i])." ".$ek[$j]." ";
 }
 }
 }else{
 echo uclu($ns[$i])." ";
 }
 }
}

echo okut("1000123"); ?>

Veritabanına Dosya ile Veri Yüklemek

PDO ile

<?php 
$db = new PDO($dsn, $user, $password);

$sql = file_get_contents('file.sql');

$qr = $db->exec($sql);
?>

Komut ile

<?php
$command = "mysql -u{$vals['db_user']} -p{$vals['db_pass']} "
 . "-h {$vals['db_host']} -D {$vals['db_name']} < {$script_path}";

$output = shell_exec($command . '/shellexec.sql');
?>

Dosyayı okuyup parça sorgulatarak

<?php 
function run_sql_file($location){
    $commands = file_get_contents($location);
    $lines = explode("\n",$commands);
    $commands = '';
    foreach($lines as $line){
        $line = trim($line);
        if( $line && !startsWith($line,'--') ){
            $commands .= $line . "\n";
        }
    }
    $commands = explode(";", $commands);
    $total = $success = 0;
    foreach($commands as $command){
        if(trim($command)){
            $success += (@mysql_query($command)==false ? 0 : 1);
            $total += 1;
        }
    }
    return array(
        "success" => $success,
        "total" => $total
    );
}

function startsWith($haystack, $needle){
    $length = strlen($needle);
    return (substr($haystack, 0, $length) === $needle);
}
?>