Düzenli İfadeler – Regular Expression Sınıfı

Düzenli ifade fonksiyonlarını pratik olarak bu sınıfla kullanmanız işlerini kolaylaştıracaktır.

<?php
class DuzenliIfade{
  public $duzenli;
  public $mod;
  public $sonuc;
  private $eslesenler;
  private $altmaskeler;
  public function __construct($duzenli=null, $mod=null){
		$this->duzenli = $duzenli;	 
		$this->mod = $mod;	 
	}
  public function match($metin, $duzenli=null, $mod=null){
    $this->kural($duzenli, $mod);	
		$res = preg_match($this->duzenliYap(), $metin, $this->sonuc, PREG_OFFSET_CAPTURE);
		$this->clear_all(); 
		if ($res){
			$this->eslesenler = new stdClass();	
			$this->eslesenler->text = $this->sonuc[0][0];
			$this->eslesenler->pos = $this->sonuc[0][1];
			$this->altmaskeler = array();
			foreach ($this->sonuc as $key=>$value){
				if($key){	
		      $submask = new stdClass();
		      $submask->text = $value[0];
		      $submask->pos = $value[1];
		      $this->altmaskeler[] = $submask;
			  } 	
		  }
		}
		return $res; 	
	}
  public function match_all($metin, $duzenli=null, $mod=null){
    $this->kural($duzenli, $mod); 
		$res = preg_match_all($this->duzenliYap(), $metin, $this->sonuc, PREG_OFFSET_CAPTURE | PREG_SET_ORDER);
		$this->clear_all(); 
		if($res){
			$this->eslesenler = array();
			$this->altmaskeler = array();	
			foreach ($this->sonuc as $key=>$value){
  	    $submask = array();	
				foreach ($value as $key1=>$value1){
					if ($key1 == 0){
						$mat = new stdClass();
						$mat->text = $value1[0];	
						$mat->pos = $value1[1];
						$this->eslesenler [] = $mat;
					}else{
						$smat = new stdClass();
						$smat->text = $value1[0];	
						$smat->pos = $value1[1];
						$submask[] = $smat;	
					}	  	
			  }
				$this->altmaskeler[] = $submask;	    	
		  }	
		}
		return $res; 	
	}
  public function replace($metin, $repl, $duzenli=null, $mod=null){
		$this->kural($duzenli, $mod);	
		return preg_replace($this->duzenliYap(), $repl, $metin);	
	}	 
  private function kural($duzenli=null, $mod=null){
		if ($duzenli) $this->duzenli = $duzenli; 	
		if ($mod) $this->mod = $mod;
	}	  	 
	private function duzenliYap(){
		return "/".str_replace("/", "\/", $this->duzenli)."/".$this->mod;	
	}
	private function clear_all(){
		if(is_array($this->eslesenler)) $this->eslesenler = null;
		if(is_object($this->eslesenler)) $this->eslesenler = null;	
		if(is_array($this->altmaskeler)) $this->altmaskeler = null;	
	}	 	 	 
}
?>

Kullanımı

<?php
$a=new DuzenliIfade;
$a->duzenli = "<a(.*?)>(.*?)</a>";	 
$metin='<a href="test.php">merhaba</a>';
if($a->match($metin)){
	 print_r($a->sonuc);
}
$a->sonuc=null;
$metin='<a href="test1.php">merhaba1</a><a href="test2.php">merhaba2</a>';
if($a->match_all($metin)){
	print_r($a->sonuc);
}
$a->sonuc=null;
$repl="$1 => $2 yazısına ait.";
$metin='<a href="test1.php">merhaba1</a><a href="test2.php">merhaba2</a>';
print_r($a->replace($metin, $repl));
?>

Çıktısı

Array
(
    [0] => Array
        (
            [0] => merhaba
            [1] => 0
        )

    [1] => Array
        (
            [0] =>  href="test.php"
            [1] => 2
        )

    [2] => Array
        (
            [0] => merhaba
            [1] => 19
        )

)
Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [0] => merhaba1
                    [1] => 0
                )

            [1] => Array
                (
                    [0] =>  href="test1.php"
                    [1] => 2
                )

            [2] => Array
                (
                    [0] => merhaba1
                    [1] => 20
                )

        )

    [1] => Array
        (
            [0] => Array
                (
                    [0] => merhaba2
                    [1] => 32
                )

            [1] => Array
                (
                    [0] =>  href="test2.php"
                    [1] => 34
                )

            [2] => Array
                (
                    [0] => merhaba2
                    [1] => 52
                )

        )

)
 href="test1.php" => merhaba1 yazısına ait. href="test2.php" => merhaba2 yazısına ait.

 

Kullanıcı Tanımlı MD5 Şifreleme

<?php
define("ktMD5_CODE","GuvenliKodBuraya"); //Your eMD5 server-side code
function ktMD5($metin){
	return ktMD5::hash($metin);
}
class ktMD5 {
	static function ikili($metin){
		$cikti=null;
		$i=0;while($i < strlen($metin)){
			$cikti .= "+". str_pad(decbin(ord(substr($metin,$i++,1))), 8, "0", STR_PAD_LEFT);
		}
		return $cikti;
	}
	static function dogrula($metin1,$metin2){ 
		if($metin1 != "+" && $metin2 != "+"){ 
			if($metin1 xor $metin2){
				return "1"; 
			}else{
				return "0"; 
			} 
		}else{
			return "+"; 
		} 
	}
	static function hash($metin){
		if(!defined("ktMD5_CODE")){exit("<b>hata: </b> ktMD5_code tanımlanmadı");}
		$metin = trim($metin);$s = md5(ktMD5_CODE);$metin = md5($metin);
		$i=0;while($i != 32){$dizi_metin[] = substr($metin,$i,8);$i=$i+8;}
		$i=0;while($i != 32){$dizi_s[] = substr($s,$i,8);$i=$i+8;}
		$metin1 = ktMD5::ikili($dizi_s[0].$dizi_metin[1].$dizi_s[2].$dizi_metin[3]);
		$metin2 = ktMD5::ikili($dizi_metin[0].$dizi_s[1].$dizi_metin[2].$dizi_s[3]);
		$kombin=null;
		$e=0;
		while($e < strlen($metin1)){ 
			$kombin .= ktMD5::dogrula(substr($metin1,$e,1),substr($metin2,$e,1)); 
			$e++; 
		}
		$cikti = md5($kombin);
		return $cikti;
	}
}
echo MD5("1234568");
echo "<br>";
echo ktMD5("1234568");
?>

Çıktısı

fe743d8d97aa7dfc6c93ccdc2e749513
e32f8d4f9b769346a74fe8d1a82c5e56

 

Sayfa Yüklenme Zamanını Göstermek ve Gizlemek

<?php
define("SAYFA_YUKLENME_ZAMANINI_GOSTER",true);
class ZamanSayaci{
	private $baslangic;
	public function __construct(){
		if(SAYFA_YUKLENME_ZAMANINI_GOSTER){
			$sure = microtime();
			$sure = explode(" ", $sure);
			$sure = $sure[1] + $sure[0];
			$this->baslangic = $sure;
		}
	}
	public function al(){
		if(SAYFA_YUKLENME_ZAMANINI_GOSTER == true){
			$sure = microtime();
			$sure = explode(" ", $sure);
			$sure = $sure[1] + $sure[0];
			$bitis = $sure;
			$toplamsure = ($bitis - $this->baslangic);
			return sprintf("Bu sayfa %f saniyede yüklendi.", $toplamsure);
		}
	}
}
$t = new ZamanSayaci();
$a = array();
for($i=0;$i<1000;$i++){
	$a[$i] = $i;
}
echo $t->al();
?>

Çıktısı

Bu sayfa 0.000530 saniyede yüklendi.

 

Belirlenen Yıl ve Haftanın Hangi Günlere Arasında Olduğunu Bulma

<?php
class gunlerarasiHafta{
	function hesapla($yil, $hafta){  
		$yil = date('Y',mktime(0, 0, 0, 1, 1, $yil));
		$ilkgunun = date('w',mktime(0, 0, 0, 1, 1, $yil));
		$haftasonu = 7-$ilkgunun;
		$song = date('Y/m/d',mktime(0, 0, 0, 1, $haftasonu, $yil));
		if($hafta<54){
			for($hft=2;$hft<=$hafta;$hft++){
				$ilkgun = $haftasonu + 1;
				$song = $ilkgun + 6;
				$haftasonu = $song;
				$ilkgun = date('Y/m/d',mktime(0, 0, 0, 1, $ilkgun, $yil));
				$song = date('Y/m/d',mktime(0, 0, 0, 1, $song, $yil));
			}
		}
		$tarih = array($yil, $ilkgun, $song);
		return $tarih;
	} 
}
$yil = 2018;
$hafta = 20;
$a=new gunlerarasiHafta;
$tarih = $a->hesapla($yil, $hafta);
echo $yil." yılı ".$hafta.". hafta başlangıç günü ".$tarih[1]." ve bitiş günü ".$tarih[2];
?>

Çıktısı

2018 yılı 20. hafta başlangıç günü 2018/05/13 ve bitiş günü 2018/05/19

 

İstatistik Sınıfı ile Medyan ve Yüzdelik Almak

<?php 
class istatistik{
	function ortanca($veri){
		$ortanca = $this->yuzdebirlik($veri,50);
		return $ortanca;
	}
	function yuzdebirlik($veri,$yuzdebirlik){
		if( 0 < $yuzdebirlik && $yuzdebirlik < 1 ) {
			$p = $yuzdebirlik;
		}else if( 1 < $yuzdebirlik && $yuzdebirlik <= 100 ) {
			$p = $yuzdebirlik * .01;
		}else {
			return "";
		}
		$say = count($veri);
		$tumindeks = ($say-1)*$p;
		$sayiindex = intval($tumindeks);
		$deger = $tumindeks - $sayiindex;
		sort($veri);
		if(!is_float($deger)){
			$sonuc = $veri[$sayiindex];
		}else {
			if($say > $sayiindex+1)
				$sonuc = $deger*($veri[$sayiindex+1] - $veri[$sayiindex]) + $veri[$sayiindex];
			else
				$sonuc = $veri[$sayiindex];
		}
		return $sonuc;
	}
	function ceyrekler($veri) {
		$q1 = $this->yuzdebirlik($veri,25);
		$q2 = $this->yuzdebirlik($veri, 50);
		$q3 = $this->yuzdebirlik($veri, 75);
		$ceyrek = array ( '25' => $q1, '50' => $q2, '75' => $q3);
		return $ceyrek;
	}
	
}
	$s = new istatistik();
	$veri = array(12,34,56);
	echo "25. Yüzdebirlik = ".$s->yuzdebirlik($veri,25)."<br />";
	echo "Ortanca (50. yuzdebirlik) = ".$s->ortanca($veri)."<br />";
	echo "95. Yüzdebirlik = ".$s->yuzdebirlik($veri,95)."<br />";
	echo "Çeyrek(25., 50., 75. yuzdebirlik) = ".implode(",	", $s->ceyrekler($veri));
?>

Çıktısı

25. Yüzdebirlik = 23
Ortanca (50. yuzdebirlik) = 34
95. Yüzdebirlik = 53.8
Çeyrek(25., 50., 75. yuzdebirlik) = 23,	34,	45

 

Dizin İçerisindeki Dosyaların İçeriğinde Kelime Arama

<?php
class dosyaIcerigindeAra{
	var $dizinAdi = '';
	var $arananKelime = '';
	var $kabulEdilenTurler = array('txt','php');
	var $bulunanDosyalar;
	var $dosyalarim;
	function ara($dizin, $arananKelime){
		$this->dizinAdi = $dizin;
		$this->arananKelime = $arananKelime;
		$this->dosyalarim = $this->dizinIcerigiAl($this->dizinAdi);
		$this->bulunanDosyalar = array();
		if ( empty($this->arananKelime) ) die('Aranan Kelime Boş');
		if ( empty($this->dizinAdi) ) die('Bir Dizin Seçmediniz');
		foreach ( $this->dosyalarim as $f ){
			$ff=explode ( '.', $f );
			if ( in_array(array_pop($ff),  $this->kabulEdilenTurler) ){
				$icerikler = file_get_contents($f);
				if ( strpos($icerikler, $this->arananKelime) !== false )
					$this->bulunanDosyalar [] = $f;
			}
		}
		return $this->bulunanDosyalar;
	}
	function dizinIcerigiAl($dizin){
		if (!is_dir($dizin)){die ("$dizin Dizini Okunamıyor!");}
		if ($ana=@opendir($dizin)){
			while ($dosya=readdir($ana)){
				if($dosya=="." || $dosya==".."){continue;}
				if(is_dir($dizin."/".$dosya)){
					$dosyalar=array_merge($dosyalar,$this->dizinIcerigiAl($dizin."/".$dosya));
				}else{
					$dosyalar[]=$dizin."/".$dosya;
				}
			}
		}
		return $dosyalar;
	}
}
$ara = new dosyaIcerigindeAra;
$aranacakdizin='C:/Program Files/EasyPHP/data/localweb';
$aranacakkelime='dal';
$ara->ara($aranacakdizin, $aranacakkelime);
echo "<pre>";
print_r($ara->bulunanDosyalar);
?>

Çıktısı

Array
(
    [0] => C:/Program Files/EasyPHP/data/localweb/index.php
    [1] => C:/Program Files/EasyPHP/data/localweb/metin.txt
)

 

SQL Enjeksiyon Kaldırma

<?php
class sql{
	public function enjeksiyonKaldir($string){
		$injections = array(">", "<", "=", "'", "?", "\\", "/", 
						"&", "|","-", "+", "%", "$", "#", "*",
						"or", "and", "drop", "insert", "rename", "select");
		$string = str_replace($injections, "", htmlentities(strtolower($string),ENT_QUOTES,"UTF-8"));
		return $string;
	}
}
$s=new sql;
echo $s->enjeksiyonKaldir("''Or'='Or''");
echo "<br>";
echo $s->enjeksiyonKaldir("anything' OR 'x'='x");
echo "<br>";
echo $s->enjeksiyonKaldir("1'or'1'='1");
echo "<br>";
echo $s->enjeksiyonKaldir("' or 1=1 or ''='");
echo "<br>";
echo $s->enjeksiyonKaldir("\" or 1=1 or \"\"=\"");
echo "<br>";
echo $s->enjeksiyonKaldir("' OR ''='");
echo "<br>";
echo $s->enjeksiyonKaldir("'' OR ''=''");
echo "<br>";
echo $s->enjeksiyonKaldir("'OR''='");
echo "<br>";
echo $s->enjeksiyonKaldir("hey' or 1=1–");
echo "<br>";
echo $s->enjeksiyonKaldir("''Or 1 = 1'");
echo "<br>";
echo $s->enjeksiyonKaldir("' or 1=1-- ");
echo "<br>";
echo $s->enjeksiyonKaldir("or 1=1--");
echo "<br>";
echo $s->enjeksiyonKaldir("\" or 1=1--");
echo "<br>";
echo $s->enjeksiyonKaldir("or 1=1--");
echo "<br>";
echo $s->enjeksiyonKaldir("' or 'a'='a");
echo "<br>";
echo $s->enjeksiyonKaldir("\" or \"a\"=\"a");
echo "<br>";
echo $s->enjeksiyonKaldir("') or ('a'='a");
echo "<br>";
echo $s->enjeksiyonKaldir("hi\") or (\"a\"=\"a");
echo "<br>";
echo $s->enjeksiyonKaldir("'hi' or 'x'='x';");
echo "<br>";
echo $s->enjeksiyonKaldir("x' or 1=1 or 'x'='y");
echo "<br>";
echo $s->enjeksiyonKaldir("\x27\x4F\x52 SELECT *");
echo "<br>";
echo $s->enjeksiyonKaldir("\x27\x6F\x72 SELECT *");
echo "<br>";
echo $s->enjeksiyonKaldir("'or select *");
echo "<br>";
echo $s->enjeksiyonKaldir("admin'--");
echo "<br>";
echo $s->enjeksiyonKaldir("\")) or ((\"x\"))=((\"x");
echo "<br>";
echo $s->enjeksiyonKaldir("\" or \"\"+\"");
echo "<br>";
echo $s->enjeksiyonKaldir("admin\"or 1=1 or \"\"=\"");
echo "<br>";
echo $s->enjeksiyonKaldir("admin\") or (\"1\"=\"1\"--");
?>

Çıktısı

039;039;039;039;039;039;
anything039; 039;x039;039;x
1039;039;1039;039;1
039; 11 039;039;039;
quot; 11 quot;quot;quot;
039; 039;039;039;
039;039; 039;039;039;039;
039;039;039;039;
hey039; 11ndash;
039;039; 1 1039;
039; 11 
11
quot; 11
11
039; 039;a039;039;a
quot; quot;aquot;quot;a
039;) (039;a039;039;a
hiquot;) (quot;aquot;quot;a
039;hi039; 039;x039;039;x039;;
x039; 11 039;x039;039;y
039; 
039; 
039; 
admin039;
quot;)) ((quot;xquot;))((quot;x
quot; quot;quot;quot;
adminquot; 11 quot;quot;quot;
adminquot;) (quot;1quot;quot;1quot;

 

Özelleştirilmiş Şifre Üretici

<?php
class SifreUretici{
	var $wc;
	var $w;
	var $l;
	var $minl;
	var $maxl;
	function SifreUretici($min, $max, $dizi=NULL){
		if($dizi == NULL){
			$this->wc = array('_','-'); // special chars
			for($i=48; $i<58; $i++){
				array_push($this->wc, chr($i)); // 0-9
			}
			for($i=65; $i<91; $i++){
				array_push($this->wc, chr($i)); // A-Z
      }    
			for($i=97; $i<122; $i++){
				array_push($this->wc, chr($i)); // a-z
      }    
			shuffle($this->wc);
		}
		else{ 
			$this->wc = $dizi; 
		}
		$this->minl = $min;
		$this->maxl = $max;
	}
	function olustur(){
		$this->w = NULL; 
		$this->l = rand($this->minl, $this->maxl); 
		for($i=0; $i<$this->l; $i++){
			$no = rand(0, count($this->wc)-1);
			$this->w .= $this->wc[$no];
		}
		return htmlentities($this->w);
	}
}
$s = new SifreUretici(10, 16); //10-16 karakter arası şifre üretir.
echo $s->olustur();
echo "<br>";
$dizi = array('a','b','1','!'); // Sadece bu karakterlerden 8 haneli şifre üretir
$s = new SifreUretici(8,8,$dizi);
echo $s->olustur();
echo "<br>";
?>

Çıktısı

f_aDfXWCmKK4t
!bb!1ab1

 

Tarihsel Aritmetik Matematik İşlemleri

<?php
class Tarih{
	function isle($tarih, $islemler, $ne = FALSE, $miktar, $sonuc = FALSE){
		$hata = "<br>Uyarı! Tarih İşlemleri Başarısız ... ";
		if(!$tarih || !$islemler) {
			return "$hata geçersiz veya mevcut olmayan argümanlar<br>";
		}else{
			if(!($islemler == "cikar" || $islemler == "-" || $islemler == "topla" || $islemler == "+")) return "<br>$hata Geçersiz İşlem...<br>";
			else {
				list($gun, $ay, $yil) = explode("/", $tarih);
				($islemler == "cikar" || $islemler == "-") ? $islem = "-" : $islem = '';
				if($ne == "gun")   $topla_gun	 = $islem."$miktar";
				if($ne == "ay") $topla_ay = $islem."$miktar";
				if($ne == "yil")  $topla_yil	 = $islem."$miktar";
				$tarih = mktime(0, 0, 0, $ay + @$topla_ay, $gun + @$topla_gun, $yil + @$topla_yil);
				($sonuc == "timestamp" || $sonuc == "ts") ? $tarih = $tarih : $tarih = date("d/m/Y", "$tarih");
				return $tarih;
			}
		}
	}
}
$t = new Tarih;
echo $tarih = $t->isle("26/05/2018", "topla", "gun", "4");
echo "<br>";
echo $tarih = $t->isle("26/05/2018", "cikar", "gun", "4");
echo "<br>";
echo $tarih = $t->isle("26/05/2018", "topla", "ay", "4");
?>

Çıktı

30/05/2018
22/05/2018
26/09/2018

 

Resmi Kendi Sunucunuza Kopyalamak

<?php
class resimKap	{
  var $sonuc = false;
	var $orjinal;
	var $yeni;
	var $hata;
	var $goster;
	function resimKap($resim,$ad)	{
		$this->orjinal = $resim;
		$veri = file_get_contents($this->orjinal);
		if (!$veri) {
			$this->$hata = "$this->orjinal açılamadı";
			return false;
		}
		if(preg_match("/\.([a-z]*)$/i",$this->orjinal,$tip))	{
			$tip = $tip[1];
			$this->yeni = $ad.".".$tip;
			$yenim = fopen($this->yeni,"wb");
			if($yenim)	{
				fputs($yenim,$veri);
				fclose($yenim);
				$this->sonuc = true;	
			}
			else	{
				$this->$hata = "$this->orjinal resmi $this->yeni olarak kaydedilemedi!";
				return false;			
			}
		}
		if($this->sonuc)	{
			echo "$this->orjinal resmi <a href='$this->yeni' target='_blank'>$this->yeni</a> olarak kaydedildi!";
		}
		else	{
			echo $this->$hata;
		}	
	}
}
new resimKap("https://www.ulusanyazilim.com/wp-content/uploads/2018/05/cropped-4916164_0.jpg","yeniresim");
?>

Çıktısı

https://www.ulusanyazilim.com/wp-content/uploads/2018/05/cropped-4916164_0.jpg resmi yeniresim.jpg olarak kaydedildi!