Php Türkçe Tarih Fonksiyonu

PHP’de türkçe tarih ve zaman formatı için setlocale() ve strftime() fonksiyonlarını kullanabiliriz. Örnek vermek gerekirse;

// Türkçe olarak ayarla
setlocale(LC_TIME, 'tr_TR');

// Tarihi Ekrana Yazdır
echo strftime('%d %B %Y, %A - %T'); // Çıktı: 23 Aralık 2017, Cumartesi - 12:15:00

strftime() için girilecek formatlara şuradan bakabilirsiniz:
http://php.net/manual/tr/function.strftime.php

Php BBKod Fonksiyonu

Kendi hazırlamış olduğum bbkod fonksiyonu.

<?php

function bbkod($par) {
   $bul = array(
      '#\[youtube=(.*?)\]#',
      '#\[b\](.*?)\[/b\]#'
    );

   $degistir = array(
      '<iframe width="100%" height="315" src="http://www.youtube.com/embed/$1" frameborder="0" allowfullscreen></iframe>',
      '<strong>$1</strong>'
   );
 
   return preg_replace($bul, $degistir, $par);
}
 
// Kullanımı
$string = "Bu bir [b]kalın yazı[/b]dır.. Ve buda bir youtube videosudur; [youtube=9bZkp7q19f0]";
echo bbkod($string);

Php Sef Link Fonksiyonu

Bu fonksiyon ile kullanıcı dostu url’ler oluşturmak için türkçe metinlerinizi derleyebilirsiniz. Tek yapmanız gereken fonksiyona parametre olarak metninizi göndermeniz. Bu sayede dönen değer url’de kullanıma uygun ve düzgün bir değer olacaktır.

function permalink($str, $options = array())
 {
     $str = mb_convert_encoding((string)$str, 'UTF-8', mb_list_encodings());
     $defaults = array(
         'delimiter' => '-',
         'limit' => null,
         'lowercase' => true,
         'replacements' => array(),
         'transliterate' => true
     );
     $options = array_merge($defaults, $options);
     $char_map = array(
         // Latin
         'À' => 'A', 'Á' => 'A', 'Â' => 'A', 'Ã' => 'A', 'Ä' => 'A', 'Å' => 'A', 'Æ' => 'AE', 'Ç' => 'C',
         'È' => 'E', 'É' => 'E', 'Ê' => 'E', 'Ë' => 'E', 'Ì' => 'I', 'Í' => 'I', 'Î' => 'I', 'Ï' => 'I',
         'Ð' => 'D', 'Ñ' => 'N', 'Ò' => 'O', 'Ó' => 'O', 'Ô' => 'O', 'Õ' => 'O', 'Ö' => 'O', 'Ő' => 'O',
         'Ø' => 'O', 'Ù' => 'U', 'Ú' => 'U', 'Û' => 'U', 'Ü' => 'U', 'Ű' => 'U', 'Ý' => 'Y', 'Þ' => 'TH',
         'ß' => 'ss',
         'à' => 'a', 'á' => 'a', 'â' => 'a', 'ã' => 'a', 'ä' => 'a', 'å' => 'a', 'æ' => 'ae', 'ç' => 'c',
         'è' => 'e', 'é' => 'e', 'ê' => 'e', 'ë' => 'e', 'ì' => 'i', 'í' => 'i', 'î' => 'i', 'ï' => 'i',
         'ð' => 'd', 'ñ' => 'n', 'ò' => 'o', 'ó' => 'o', 'ô' => 'o', 'õ' => 'o', 'ö' => 'o', 'ő' => 'o',
         'ø' => 'o', 'ù' => 'u', 'ú' => 'u', 'û' => 'u', 'ü' => 'u', 'ű' => 'u', 'ý' => 'y', 'þ' => 'th',
         'ÿ' => 'y',
         // Latin symbols
         '©' => '(c)',
         // Greek
         'Α' => 'A', 'Β' => 'B', 'Γ' => 'G', 'Δ' => 'D', 'Ε' => 'E', 'Ζ' => 'Z', 'Η' => 'H', 'Θ' => '8',
         'Ι' => 'I', 'Κ' => 'K', 'Λ' => 'L', 'Μ' => 'M', 'Ν' => 'N', 'Ξ' => '3', 'Ο' => 'O', 'Π' => 'P',
         'Ρ' => 'R', 'Σ' => 'S', 'Τ' => 'T', 'Υ' => 'Y', 'Φ' => 'F', 'Χ' => 'X', 'Ψ' => 'PS', 'Ω' => 'W',
         'Ά' => 'A', 'Έ' => 'E', 'Ί' => 'I', 'Ό' => 'O', 'Ύ' => 'Y', 'Ή' => 'H', 'Ώ' => 'W', 'Ϊ' => 'I',
         'Ϋ' => 'Y',
         'α' => 'a', 'β' => 'b', 'γ' => 'g', 'δ' => 'd', 'ε' => 'e', 'ζ' => 'z', 'η' => 'h', 'θ' => '8',
         'ι' => 'i', 'κ' => 'k', 'λ' => 'l', 'μ' => 'm', 'ν' => 'n', 'ξ' => '3', 'ο' => 'o', 'π' => 'p',
         'ρ' => 'r', 'σ' => 's', 'τ' => 't', 'υ' => 'y', 'φ' => 'f', 'χ' => 'x', 'ψ' => 'ps', 'ω' => 'w',
         'ά' => 'a', 'έ' => 'e', 'ί' => 'i', 'ό' => 'o', 'ύ' => 'y', 'ή' => 'h', 'ώ' => 'w', 'ς' => 's',
         'ϊ' => 'i', 'ΰ' => 'y', 'ϋ' => 'y', 'ΐ' => 'i',
         // Turkish
         'Ş' => 'S', 'İ' => 'I', 'Ç' => 'C', 'Ü' => 'U', 'Ö' => 'O', 'Ğ' => 'G',
         'ş' => 's', 'ı' => 'i', 'ç' => 'c', 'ü' => 'u', 'ö' => 'o', 'ğ' => 'g',
         // Russian
         'А' => 'A', 'Б' => 'B', 'В' => 'V', 'Г' => 'G', 'Д' => 'D', 'Е' => 'E', 'Ё' => 'Yo', 'Ж' => 'Zh',
         'З' => 'Z', 'И' => 'I', 'Й' => 'J', 'К' => 'K', 'Л' => 'L', 'М' => 'M', 'Н' => 'N', 'О' => 'O',
         'П' => 'P', 'Р' => 'R', 'С' => 'S', 'Т' => 'T', 'У' => 'U', 'Ф' => 'F', 'Х' => 'H', 'Ц' => 'C',
         'Ч' => 'Ch', 'Ш' => 'Sh', 'Щ' => 'Sh', 'Ъ' => '', 'Ы' => 'Y', 'Ь' => '', 'Э' => 'E', 'Ю' => 'Yu',
         'Я' => 'Ya',
         'а' => 'a', 'б' => 'b', 'в' => 'v', 'г' => 'g', 'д' => 'd', 'е' => 'e', 'ё' => 'yo', 'ж' => 'zh',
         'з' => 'z', 'и' => 'i', 'й' => 'j', 'к' => 'k', 'л' => 'l', 'м' => 'm', 'н' => 'n', 'о' => 'o',
         'п' => 'p', 'р' => 'r', 'с' => 's', 'т' => 't', 'у' => 'u', 'ф' => 'f', 'х' => 'h', 'ц' => 'c',
         'ч' => 'ch', 'ш' => 'sh', 'щ' => 'sh', 'ъ' => '', 'ы' => 'y', 'ь' => '', 'э' => 'e', 'ю' => 'yu',
         'я' => 'ya',
         // Ukrainian
         'Є' => 'Ye', 'І' => 'I', 'Ї' => 'Yi', 'Ґ' => 'G',
         'є' => 'ye', 'і' => 'i', 'ї' => 'yi', 'ґ' => 'g',
         // Czech
         'Č' => 'C', 'Ď' => 'D', 'Ě' => 'E', 'Ň' => 'N', 'Ř' => 'R', 'Š' => 'S', 'Ť' => 'T', 'Ů' => 'U',
         'Ž' => 'Z',
         'č' => 'c', 'ď' => 'd', 'ě' => 'e', 'ň' => 'n', 'ř' => 'r', 'š' => 's', 'ť' => 't', 'ů' => 'u',
         'ž' => 'z',
         // Polish
         'Ą' => 'A', 'Ć' => 'C', 'Ę' => 'e', 'Ł' => 'L', 'Ń' => 'N', 'Ó' => 'o', 'Ś' => 'S', 'Ź' => 'Z',
         'Ż' => 'Z',
         'ą' => 'a', 'ć' => 'c', 'ę' => 'e', 'ł' => 'l', 'ń' => 'n', 'ó' => 'o', 'ś' => 's', 'ź' => 'z',
         'ż' => 'z',
         // Latvian
         'Ā' => 'A', 'Č' => 'C', 'Ē' => 'E', 'Ģ' => 'G', 'Ī' => 'i', 'Ķ' => 'k', 'Ļ' => 'L', 'Ņ' => 'N',
         'Š' => 'S', 'Ū' => 'u', 'Ž' => 'Z',
         'ā' => 'a', 'č' => 'c', 'ē' => 'e', 'ģ' => 'g', 'ī' => 'i', 'ķ' => 'k', 'ļ' => 'l', 'ņ' => 'n',
         'š' => 's', 'ū' => 'u', 'ž' => 'z'
     );
     $str = preg_replace(array_keys($options['replacements']), $options['replacements'], $str);
     if ($options['transliterate']) {
         $str = str_replace(array_keys($char_map), $char_map, $str);
     }
     $str = preg_replace('/[^\p{L}\p{Nd}]+/u', $options['delimiter'], $str);
     $str = preg_replace('/(' . preg_quote($options['delimiter'], '/') . '){2,}/', '$1', $str);
     $str = mb_substr($str, 0, ($options['limit'] ? $options['limit'] : mb_strlen($str, 'UTF-8')), 'UTF-8');
     $str = trim($str, $options['delimiter']);
     return $options['lowercase'] ? mb_strtolower($str, 'UTF-8') : $str;
 }

// Kullanımı
$deger = "Bu Türkçe Bir Yazıdır";
echo permalink($deger);

$deger = "Συχνές Ερωτήσεις";
echo permalink($deger);

Eğer kullanımı ile ilgili daha fazla detay isterseniz yorumlar bölümünden bana sorabilirsiniz.

Php Yazı Kısaltma Fonksiyonu

Hazırlamış olduğum php yazı kısaltma fonksiyonu.

<?php

	function kisalt($kelime, $str = 10)
	{
		if (strlen($kelime) > $str)
		{
			if (function_exists("mb_substr")) $kelime = mb_substr($kelime, 0, $str, "UTF-8").'..';
			else $kelime = substr($kelime, 0, $str).'..';
		}
		return $kelime;
	}

	// Kullanımı
	$uzunYazi = "bu gerçekten çok uzun yazı ve daha ne kadar uzatılır bilmiyorum.";
	echo kisalt($uzunYazi, 20);

Php Dosya Yükleme Sorunu ve Çözümü

Uzman Cevap’da sıkça sorulan sorulardan bir tanesi, aynı sayfada dosya yükleme işleminin nasıl yapıldığıydı.. Yani sorun şu ki, başka bir sayfaya gönderince dosya yükleme işlemi oluyor ama aynı sayfada yapınca olmuyor.. En azından bilmeyenlerin düşündüğü durum budur ???? Peki aslı astarı nedir bu olayın?

Şimdi büyük ihtimalle sizde böyle bir sorunla karşılaştıysanız yaptığınız işlem şudur;

if ($_POST)
{
     // dosya yükleme işlemi
}

Ve html kodunuzda şöyle olsun;

<form action="" method="post" enctype="multipart/form-data">
	Dosya: <input type="file" name="dosya" /> <button type="submit">Yükle</button>
</form>

Burada siz dosyaları seçip gönderseniz bile işlem yapmayacaktır.. Çünkü herhangi bir değer göndermiyorsunuz, yani tipi file olan input dışında bir değer göndermiyorsunuz..

Çözümü;
En basit olarak submit butonuna name vermeniz yeterli olacaktır ????

<form action="" method="post" enctype="multipart/form-data">
	Dosya: <input type="file" name="dosya" /> <button name="submit" type="submit">Yükle
</form>

Bu şekilde çözüme ulaşabilir, aynı dosya içerisinde upload işlemini sorunsuz bir şekilde yapabilirsiniz.. Elbette her upload sorunu bu olacak değil ama bu sorunla çok fazla karşılaşıldığı için bilgilendirme amaçlı yazıyorum bu yazımı ???? görüşmek üzere.

Php Tırnak Sorunu ve Çözümü

Merhaba arkadaşlar, php’de tırnak sorunu olduğu bir gerçek.. Ve bu sorunla uzun süredir karşılaşıyorum, bir şekilde görmezden gelsem de son hazırladığım sistemde artık kesin bir çözüm bulmalı dedim ve o kadarda zor olmayan bir çözüm buldum ???? Şimdi ne yapacağız bir inceleyelim..

İlk olarak sorunu tanımlayalım;
Yazılarımız içerisinde (özellikle input içine yazdırdığımız değerlerde) tırnak olursa, o tırnaktan sonraki kısım gözükmüyor.. Yani kısaca input’da value=”” şeklinde yazarsak çift tırnaktan sonrası value=” şeklinde yazarsak da tek tırnaktan sonrası gözükmüyor..

Sorunun çözümü;
Verileri kayıt ederken içerisindeki tek ve çift tırnakları replace edeceğiz.. Tırnak kodları aşağıdadır;
Tek Tırnak (‘) => &#39;
Çift Tırnak (“) => &quot;

Replace edeceğimiz fonksiyonu oluşturalım..

function tirnak_replace ($par)
{
  return str_replace(
    array("'", "\""),
    array("'", """),
    $par
 );
}

Evet replace eden fonksiyonumuzu oluşturduk.. Bunu array_map ile post metodu ile gönderdiğimiz her veriye uygulayalım;

array_map("tirnak_replace", $_POST)

Tamamdır, artık post ile veri gönderirken, tırnaklarınız tırnak kodu olarak replace edilecek yani değiştirilecektir.Not: Sef link fonksiyonu kullanıyorsanız, bu şekilde replace ettiğinizde link yapısında bazı sorunlar olabilir.. Örneğin quot ya da 39 gibi değerler eklenebilir.. Bunun olmaması için sef link fonksiyonunuz içinde yukarıdaki iki kodu (&#39 ve &quot) null olarak replace etmelisiniz..


Örnek Sef Link Fonksiyonu;

function sef_link($baslik)
{
	$baslik = str_replace(array("&quot;","&#39;"), NULL, $baslik); // tırnaklar için replace
	$bul = array('Ç', 'Ş', 'Ğ', 'Ü', 'İ', 'Ö', 'ç', 'ş', 'ğ', 'ü', 'ö', 'ı', '-');
	$yap = array('c', 's', 'g', 'u', 'i', 'o', 'c', 's', 'g', 'u', 'o', 'i', ' ');
	$perma = strtolower(str_replace($bul, $yap, $baslik));
	$perma = preg_replace("@[^A-Za-z0-9\-_]@i", ' ', $perma);
	$perma = trim(preg_replace('/\s+/',' ', $perma));
	$perma = str_replace(' ', '-', $perma);
	return $perma;
}

Hadi hayırlı olsun, artık böyle bir derdiniz kalmadı ????

Php ile MySQL Sürümünü Bulmak

Projelerinizde lazım olabilecek bir konuyu sizlerle paylaşmak istiyorum.. Keyfi ya da sürüme göre işlem yapabileceğiniz zamanlar gelebilir.. Bu durumlarda tabi ilk olarak mysql sürümünü öğrenmeniz gerekir.. MySQL sürümünü öğrenmek için gerekli kodları aşağıda bulabilirsiniz;

<?php

	$query = mysql_query("select version() as versiyon");
	$row = mysql_fetch_object($query);
	
	$versiyon = $row->versiyon;
	echo $versiyon; // Örn: 5.1.65-cll

Php ile MySQL Sürümünü Bulmak

Projelerinizde lazım olabilecek bir konuyu sizlerle paylaşmak istiyorum.. Keyfi ya da sürüme göre işlem yapabileceğiniz zamanlar gelebilir.. Bu durumlarda tabi ilk olarak mysql sürümünü öğrenmeniz gerekir.. MySQL sürümünü öğrenmek için gerekli kodları aşağıda bulabilirsiniz;

<?php

$query = mysql_query("select version() as versiyon");
$row = mysql_fetch_object($query);
	
$versiyon = $row->versiyon;
echo $versiyon; // Örn: 5.1.65-cll

Php URL Regexleri

Merhaba arkadaşlar, bir proje için lazım oldu bu regexler bana.. Bir daha kaybetmemek için bloguma konusunu açayım dedim, eminim sizlerinde işine yarayacaktır bu regex’ler ????

Link yapısı içerisinden orjinal domaini bulmanızı sağlar;
(HTTPS desteği yoktu onu düzenledim çalışıyor sorun yok..)

$url = "http://www.uzmancevap.org/soru/653/backlink-konusunda";
preg_match('@^(?:http://|https://)?([^/]+)@i', $url, $matches);
$host = $matches[1];
echo $host;

Domain Doğruluk Kontrolü;

$url = "http://www.google.com";
if (preg_match('/^(http|https|ftp):\/\/([A-Z0-9][A-Z0-9_-]*(?:\.[A-Z0-9][A-Z0-9_-]*)+):?(\d+)?\/?/i', $url))
{
	echo "Geçerli Domain";
}
else
{
	echo "Hatalı Domain";
}

Extra: Herhangi bir kelimeyi renklendirmek için gerekli regex;

$text = "Bu basit bir örnektir ve bu örnek içinde erbilen ifadesi geçtiği sürece bu erbilen ifadesini regex sağolsun renklendirecektir..";
$text = preg_replace("/\b(erbilen)\b/i", '', $text);
echo $text;

Extra: String ifade içerisinde bulunan linkleri otomatik çevirir;

$text = "Burada linkler olabilir örneğin http://www.erbilen.net gibi ya da http://twitter.com gibi.. Bu linkleri regex otomatik link haline getirecek..";
$text = preg_replace('@(https?://([-\w\.]+)+(:\d+)?(/([\w/_\.]*(\?\S+)?)?)?)@', '<a href="$1">$1</a>', $text);
echo $text;

Hepsinide kullandım, hepsi işe yarar regexler ???? Kolay gelsin..