Dosya Oluşturma, Silme, Düzenleme

<?php
/* Dosya Oluşturma */
$dosyaismi="bosdosya.txt";
if (touch($dosyaismi))
{echo "dosya oluşturuldu<br>";}else{echo "dosya oluşturulamadı<br>";}

/* Dosya Silme */
$dosyaismi="bosdosya.txt";
if (@unlink($dosyaismi))
{echo "dosya silindi<br>";}else{echo "dosya mevcut değil<br>";}

/* Tekrar Dosya Oluşturma */
$dosyaismi="bosdosya.txt";
if (touch($dosyaismi))
{echo "dosya tekrar oluşturuldu<br>";}else{echo "dosya tekrar oluşturulamadı<br>";}

/* Dosyaya Yazma */
$dosyaismi="bosdosya.txt";
if (file_put_contents($dosyaismi,"buraya yazı gelecek<br>"))
{echo "dosyaya yazıldı<br>";}else{echo "dosyaya yazılamadı<br>";}

/* Dosyanın devamına Yazma */
$dosyaismi="bosdosya.txt";
if (file_put_contents($dosyaismi,"buraya yazı gelecek<br>",FILE_APPEND))
{echo "dosyaya yazıldı<br>";}else{echo "dosyaya yazılamadı<br>";}


?>

 

WordPress Seo Missing required field “updated” ve “author” Hatası Nasıl Çözülür?

Google Seo Analizlerinde karşılaştığım bir hatanın çözümünü sizlerle paylaşmak istedim.

Her Tema İçin tema dizininizde bulunan loop.php içine

<span class="updated"><?php echo the_time();?></span> <span class="author vcard"><span class="fn">UlusanYazılım</span></span>

kodunu istediğiniz çalışabilecek bir yere yapıştırınız.Hepsi bu kadar…

Alternatif:Twentyten teması için anlatım

/wp-content/themes/twentyten/functions.php

1.Tema dizininizdeki functions.php‘nin içini açıyoruz.

2. “function twentyten_posted_on()” yazan (tırnaklar hariç) satırı buluyoruz.

3. Üç alttaki satırda “sprintf” ile başlayan satırdaki (Satır:513)

 sprintf( '<a href="%1$s" title="%2$s" rel="bookmark"><span class="entry-date">%3$s</span></a>',

kodunu

sprintf( '<a href="%1$s" title="%2$s" rel="bookmark"><span class="entry-date updated">%3$s %2$s</span></a>',

ile değiştiriyoruz. Hepsi bu kadar…

http://www.google.com/webmasters/tools/richsnippets ile sitenizi kontrol edebilirsiniz.

İstatistiklerde ise bir sonraki bot ziyaretinde güncelleneceğini ümit ediyoruz 🙂

Güncelleme 19.08.2014
Aşağıdaki örnekte span class isimlerini kullanılarak bu sorunların aşıldığı tespit edilmiştir.

<span class="updated">2014</span> <span class="author vcard"><span class="fn">UlusanYazılım</span></span>

 

Shuffle ve Rand Kullanımı

Daha çok kura,çekiliş ve oyun sistemlerinde kullanılır.
Shuffle
Dizi içindeki elemanları karıştırır.
Kullanımı

<?php
  $a=array(1,2,3,4);
  shuffle($a);
  print_r($a);
?>

Çıktısı

<span style="color: #000000;">Array ( 
  [0] => 4 
  [1] => 1 
  [2] => 3 
  [3] => 2 
)</span>

Mesela 1 den 10 a kadar olan sayı dizisi oluşturup karıştıralım

<?php
for($i=1;$i<11;$i++){
 $a[]=$i;
}
shuffle($a); 
foreach($a as $b){
 echo $b."<br>";
} 
?>

Yenilendikçe değişen rastgele bir harita yerleşimi örneği

map

<DOCTYPE html>
<html>
<head>
 <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
 <title></title>
 <style>
 body{
 margin:0;
 padding:0;
 }
 #kapsa{
 width:100%;
 }
 .ortala{
 width:400px;
 margin:0 auto;
 }
 #harita{
 background-color:SteelBlue;
 height:400px;
 }
 .nokta{
 position:absolute;
 background-color:#fff;
 border:1px solid #000;
 -webkit-border-radius: 5px;
-moz-border-radius: 5px;
border-radius: 5px;
height:10px;
width:10px;
 }
 </style>
</head>
<body>
 <div id="kapsa">
 <div class="ortala">
 <div id="harita">
<?php 
for($i=0;$i<40;$i++){
 $a[]=$i*10;
 $b[]=$i*10;
}
shuffle($a); 
shuffle($b); 
$c=array_merge($a,$b);
for($i=1;$i<41;$i++){
 echo '<div class="nokta" style="margin-left:'.$c[$i].'px;margin-top:'.$c[(80-$i)].'px"> </div>';
} 
?>
 </div>
 </div>
 </div>
</body>
</html>

Rand Rastgele bir sayı üretir. Kullanımı

<?php 
  $sayi=rand(1,10);
?>

Çıktısı

7

Dizi Kullanımı

Dizi – Array Nedir?

Bir listedir.Karmaşık veya tek başına olabilir.Örneğin bir alışveriş listesi.

Dizi Oluşturmak

Aynı değişken gibi başlar ve array parantezleri içine yazılır.

$dizi = array("Domates", "Biber", "Patlıcan");

Dizi Syntax Sözdizimi

Tırnaklar içine arada virgül kullanılarak yapılır.

$dizi = array("Domates", "Biber", "Patlıcan","Elma,"Armut");

Dizi de bir değer nasıl alınır?

$dizi = array("Domates", "Biber", "Patlıcan","Elma,"Armut");
echo $dizi[2];

Bize Patlıcan değerini verecektir.Dizinin ilk elemanı 0 dır.Yani bu örneğimizde $dizi[0];

Dizi Değiştirme

$dizi = array("Domates", "Biber", "Patlıcan","Elma,"Armut");
$dizi[1] = "Soğan"; 
echo $dizi[1];

Örneğimizde Biber ile Soğan ı yer değiştirmiş olduk.

Dizi Silme

$dizi = array("Domates", "Biber", "Patlıcan","Elma,"Armut");
unset($dizi[4]);//burada "Armut"u sildik
unset($dizi);//burada "tüm diziyi" sildik
foreach($dizi as $d) {
 echo  "$d";
}

Youtube Url Expander

Herhangi bir youtube adresini sitenizde iframe içinde izlemenize olanak sağlar.

<?php 
function checkValues($value){
	$value = trim($value);
	if (get_magic_quotes_gpc()) {
	$value = stripslashes($value);
	}
	$value = strtr($value,array_flip(get_html_translation_table(HTML_ENTITIES)));
	$value = strip_tags($value);
	$value = mysql_real_escape_string($value);
	$value = htmlspecialchars ($value);
	return $value; 
}
function auto_link_text($text) {
 $pattern = '#\b(([\w-]+://?|www[.])[^\s()<>]+(?:\([\w\d]+\)|([^[:punct:]\s]|/)))#';
 return preg_replace_callback($pattern, 'auto_link_text_callback', $text);
}
function auto_link_text_callback($matches) {
 $max_url_length = 50;
 $max_depth_if_over_length = 2;
 $ellipsis = '…';
 $url_full = $matches[0];
 $url_short = '';

 if (strlen($url_full) > $max_url_length) {
 $parts = parse_url($url_full);
 $url_short = $parts['scheme'] . '://' . preg_replace('/^www\./', '', $parts['host']) . '/';

 $path_components = explode('/', trim($parts['path'], '/'));
 foreach ($path_components as $dir) {
 $url_string_components[] = $dir . '/';
 }

 if (!empty($parts['query'])) {
 $url_string_components[] = '?' . $parts['query'];
 }

 if (!empty($parts['fragment'])) {
 $url_string_components[] = '#' . $parts['fragment'];
 }

 for ($k = 0; $k < count($url_string_components); $k++) {
 $curr_component = $url_string_components[$k];
 if ($k >= $max_depth_if_over_length || strlen($url_short) + strlen($curr_component) > $max_url_length) {
 if ($k == 0 && strlen($url_short) < $max_url_length) {
 $url_short .= substr($curr_component, 0, $max_url_length - strlen($url_short));
 }
 $url_short .= $ellipsis;
 break;
 }
 $url_short .= $curr_component;
 }

 } else {
 $url_short = $url_full;
 }
	preg_match("/^(?:http(?:s)?:\/\/)?(?:www\.)?(?:youtu\.be\/|youtube\.com\/(?:(?:watch)?\?(?:.*&)?v(?:i)?=|(?:embed|v|vi|user)\/))([^\?&\"'>]+)/", $url_short, $cikti);
 return '<p><iframe width="420" height="213" src="http://youtube.com/embed/'.$cikti[1].'" 
 frameborder="0" allowfullscreen></iframe></p>'; 
}
echo auto_link_text(checkValues("https://www.youtube.com/watch?v=uaVxC4syxPY"));

Çıktısı

https://www.youtube.com/watch?v=3vIMG7fTVMc

Sınırsız Alt Kategori

İstek üzerine daha önce codeigniter için kullanmış olduğum bir kategorileme sistemi,kendinize göre düzenleyip kullanabilirsiniz…

<ul id="altkategori">
 <?php
 // Kategori Listesini Al
 $kategori_list=array();
 $i=0;
 
 foreach($kategoriler as $row_kategori){
 $kategori_list[$i]['id']=$row_kategori->id;
 $kategori_list[$i]['name']=$row_kategori->name;
 $kategori_list[$i]['parent_id']=$row_kategori->parent_id;
 $i++;
 }
 function SinirsizKategoriListele($kategoriArray , $ebeveyn = 0 , $kademe_pixel = 5 , $i = 0 , $menuler = NULL , $nested = FALSE ) 
 { 
 if( empty($kategoriArray) ){
 return;
 }
 if( !$nested ){
 foreach($kategoriArray as $row):
 $items[$row['parent_id']][]=$row;
 endforeach;
 }else{
 $items=$kategoriArray;
 }
 foreach( $items[$ebeveyn] as $sayfa ){
 $bosluk=str_repeat(' ',($i * $kademe_pixel));
 $menuler .= '<li><a href="'.base_url()."products/category/".$sayfa['id']."/".seolinkhtml($sayfa['name']).'">'.$sayfa['name'].'</a>'.PHP_EOL;
 if(isset($items[$sayfa['id']])){
 $menuler .= '<ul>'.PHP_EOL;
 $menuler=SinirsizKategoriListele($items,$sayfa['id'],$kademe_pixel,($i + 1),$menuler,TRUE);
 $menuler .= '</ul>'.PHP_EOL;
 }
 
 $menuler .= '</li>'.PHP_EOL;
 }
 return $menuler;
 }
 echo SinirsizKategoriListele($kategori_list);
 ?>
</ul>

 

Düzenli İfade İşleçleri

İşleç Açıklama
\ çeşitli kullanımları olan genel önceleme karakteri
^ konu başlangıcıyla eşleşme işleci (satır kipinde veya çok satırlı kipte)
$ konu sonuyla eşleşme işleci (satır kipinde veya çok satırlı kipte)
. (öntanımlı olarak) satırsonu hariç herhangi bir karakterle eşleşme işleci
[ Karakter sınıfı tanımı başlatma işleci
] Karakter sınıfı tanımı bitirme işleci
| veya işleci
( alt şablon başlatma işleci
) alt şablon bitirme işleci
? “(” işlecinin anlamını genişletir; 0 veya 1 kere eşleşir, ayrıca tamahkarlığa son verilir.
* 0 veya daha fazlasıyla eşleşme işleci
+ 1 veya daha fazlasıyla eşleşme işleci
{ Yineleme başlatma işleci
} Yineleme bitirme işleci
Köşeli ayraçların içinde kalan kısım “karakter sınıfı” adını alır. Bir karakter sınıfı içinde özel anlamı olan işleçler şunlardır:
\ genel önceleme karakteri
^ sınıfın ilk karakteri olduğu takdirde sınıfla eşleşmeme işleci
karakter aralığı işleci
] karakter sınıfı bitirme işleci

Örneğin ‘^’ ve ‘$’ işleçlerini ele alalım. Bunlar bir dizgeni başında ve sonunda neler yapıyor?

‘^bir’ – “bir” ile başlayan dizge.
‘yapıyor$’ – “yapıyor” ile biten dizge.
‘^elma$’ – “elma” ile başlayan ve biyen dizgeler. Bu, sorgunun kendisine, yani “elma” dizgesine eşittir.
“elma” – Herhangi bir yerinde “elma” içeren dizge.

Eğer her iki sembolü de kullanamıyorsanız, son örnekte olduğu gibi dizgeyi her yerde arayabilirsiniz.

‘*’,’?’ ve ‘+’ sembolleri vardır. Bunlar bir karaktere veya bir karakter grubuna eşit olabilir. “sıfır veya daha fazla”, “bir veya daha fazla” ve “sıfır veya bir”. Bunlar ne demektir? Birkaç örnek:

‘ab*’ – “b” karakterinden sıfır veya daha fazla olabilir. (‘a’,’ab’,’abb’,’abbb’…)
‘ab+’ – “b” karakterinden bir veya daha fazla olabilir. (‘ab’,’abbb’,’abbbb’,…)
‘ab?’ – “b” karakterinden sıfır veya bir tane var. (‘ab’,’a’)
‘a?b+$’ – “a” ile başlayan ve bir veya daha fazla “b” içeren bir dizge, başka bir dizgenin sonunda. (‘bu bir abbb’)

Ayrıca küme parantezi kullanarak içerik limitimi belirleyebilirsiniz.

‘ab{2}’ – “abb” şeklinde sadece iki “b” içeren dizge.
‘ab{2,9}’ – 2 ve 9 arasında bir sayı miktarınca “b” içeren dizge. Bu sayılara 2 ve 9 da dahildir.
‘ab{2,}’ – 2 veya daha fazla “b” içeren dizge.

Daha ayrıntılı örnek kullanımlar için bazı adresler:

İp Adres Filtreleme

Dosya Uzantısı Filtreleme

Referans Karakterler Tablosu

Php.net Sözdimi Anlatımları

Diğer Örneklemler

[abc] tek bir karakter: a, b veya c

[^abc] a, b, veya c dışında herhangi tek bir karakter.

[a-z]  a-z arasındaki herhangi bir karakter. (sadece küçük harf ve ingilizce harfler)

[a-zA-Z] a-z veya A-Z arasındaki herhangi bir karakter. (küçük büyük ingilizce harfler)

^ satır başlangıcı

$ Satır bitişi

\A string  başlangıcı

\z string bitişi

.  Herhangi bir karakter.

\s herhangi bir boşluk karakteri.

\S herhangi boşluk olmayan bir karakter

\d herhangi bir rakam

\D herhangi bir rakam olmayan karakter

\w herhangi bir kelime karakteri. harf, sayı veya alt çizgi

\W herhangi bir kelime dışı karakter

\b kelime sınırlayıcı karakter.

(…) içerideki herşeyi yakala!

(a|b) a veya b karakteri

a? sıfır veya 1 tane a karakteri

a* 0 veya 1 veya birkaç tane a karakteri

a+ 1 veya daha fazla a karakteri

a{3} tam olarak 3 tane a karakteri

a{3,} 3 veya daha fazla a karakteri

a{3,6} 3 ve 6 tane arasında a karakteri

Tüm desenleri preg_match(“/BU KISIMA YAZARAK DENEYEBİLİRSİNİZ/”,$metin);

Kalıp Bazı Örnekler

  1. </?[^>]+>
    HTML etiketlerini ifade eder.
  2. (((+|-)?\d+(\.\d*)?)|((+|-)?(\d*\.)?\d+))
    Negatif veya pozitif tam ve ondalıklı sayı.
  3. (\d{4})[.-/](\d{1,2})[.-/](\d{1,2})
    yyyy.aa.gg biçimindeki tarih bilgisi. $1 = yıl, $2 = ay, $3 = gün
  4. (?#year)(19|20)\d\d[- /.](?#month)(0[1-9]|1[012])[- /.](?#day)(0[1-9]|[12][0-9]|3[01])
    Tarih formatının başka yazımı. Burada “(?#” ilebaşlayan bölüm açıklama yazmak üzere kullanılır ve açıklama metni “)” ile sonlanır.
  5. SELECT 'BT sorguda regexp BT' REGEXP '[[:<:]]BT.*BT[[:>:]]'
    MySQL e özgü yazımla regexp kullanımı.
  6. \d{2}\s?[A-Z]{1,3}\s?\d{2,4}
    Tr plaka tanımına uygun regexp gösterimi (özel plakalar hariç).

Extralar

[] : Karakter aralığını belirtir.

[a-z] : a ile z arası tek bir karakter

[A-Z] : a ile z arası tek bir karakter

[0-9]  : 0 ile 9 arası bir rakam

[a-zA-Z0-9] : a ile z ya da A ile Z ya da 0 ile 9 arası bir karakter

[!@#$%^] : Herhangi bir ! ya da @ ya da # ya da  $ ya da % ya da ^ karakteri

ONLİNE REGEX ARAÇLARI

Aşağıdaki faydalı kaynakları da inceleyip kurcalamanızı öneriyorum.

Örnek Saat Kontrolü

$pattern= '/^([01][0-9]|[2][0-3]):[0-5][0-9]:[0-5][0-9]$/';
$content = '23:15:59';
 
if(preg_match($pattern, $content))
{
 echo 'Doğru bir saat girilmiş';
}
else
{
 echo 'Yanlış bir saat formatı girilmiş';
}

Bir sitenin başlığını çekmek

$pattern = '/<title>(.+)<\/title>/i';
$content = file_get_contents('http://phpstate.ulusanyazilim.com');
preg_match_all($pattern, $content, $results);
print_r($results);

Url Yakalama Şablonu

$pattern = '(https?:\/\/(([a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,6}\/?[^\b\s]+))';
$content = 'Bugün http://phpstate.ulusanyazilim.com çok daha güçlü';
$replace = '<a href="$0">$1</a>';
echo preg_replace($pattern, $replace, $content);

Örnek Hava Durumu

$content = file_get_contents('http://www.mgm.gov.tr/tahmin/il-ve-ilceler.aspx?m=ISTANBUL');
 
// Derece
preg_match_all('/<em class="renkMin zemimeZ">(.+)C<\/em><\/td>/si', $content, $results);
// İlk eşleşeni alıyoruz
$degree = $results[1][0];
 
// Hava durumunun ikonu ve açıklaması
preg_match_all('/"([\wÇŞİĞÜÖöçşğüı ]+)" rowspan="2"><img src="\.\.([\w\/\.-]+)"/si', $content, $results);
$description = $results[1][0];
$image = 'http://www.mgm.gov.tr' . $results[2][0];
 
echo $degree . ' ' . $description;
echo '<img src="' . $image . '" />';

İfade Grupları

$pattern = '/(?\w+@\w+(?:\.\w+)+)/i';
$content = 'Bir kaç adres: elma@manav.com, yarimkilo@kasap.com, ates@askeriye.com';
 
preg_match_all($pattern, $content, $results);
 
print_r($results['email']);

Çıktısı

Array
(
    [0] => elma@manav.com
    [1] => yarimkilo@kasap.com
    [2] => ates@askeriye.com
)

 

Düzenli İfade Değiştiriciler

Değiştirici Açıklama
x Regexp yazımındaki boşlukları dikkate almaz
i Büyük küçük harf duyarlılığını iptal eder ( [a-z] = [A-Z] )
s Tüm satırları tek bir satır gibi işleme alır. Nokta karakteri satırbaşı simgelerini de kapsayabilir.
m Çoklu eşlemeye olanak sağlar. Her satırı ayrı değerlendirerek, ^ ve $ simgelerinin kullanımına olanak sağlar.
g Genel tarama olanağı sağlar. Regexp uyumlu bul-değiştir uygulamalarda ilk bulunan değil kurala uyan tüm değişikliklerin yapılmasını sağlar. Bu değiştirici etiket bazı uygulamalarda varsayılan olarak seçilidir.
e Sadece preg_replace() için simge geri gönderimi yapar
A Dizge başlangıcı ile eşleşmeye zorlar.(^ gibi)
D Dizge sonu ile eşleşir.m değiştiricisi varsa etkisiz kalır.($ gibi)
S Sonsuz eşleşme döngüsü için zaman kısaltma
U (?) tersine çevirir
X Ters bölü açıp kapatır /
J (?j) İsimlerin alt şablonlarda tekrarlanmasını sağlar.
u dizgelerin karakter kodlaması utf-8 varsayılan olur.

*Yukarıdaki tablo siyah en çok kullanılan yeşil az kullanılan ögelerden derlenmiştir.

<?php $metin="aliAli a0A0aa";?>

Yukarıdaki metinde “a” harfi aramak için örnek kullanımlar

<?php preg_match_all("@a@i", $metin,$cikti);?>

Çıktısı

Array
(
 [0] => Array
 (
 [0] => a
 [1] => A
 [2] => a
 [3] => A
 [4] => a
 [5] => a
 )
)
preg_match_all("@a@s", $metin,$cikti);

Çıktısı

Array
(
 [0] => Array
 (
 [0] => a
 [1] => a
 [2] => a
 [3] => a
 )
)

Düzenli İfade Ayırıcılar

Delimiter=Ayırıcı   Pattern=Şablon,Model,Kural  RegEx=RegularExpression=Düzenli,Kurallı İfade

Örnek olarak rakam algılamak için kullanılan bir örnek

preg_match(“/[0-9]/“, $metin);
preg_match(“#[0-9]#“, $metin);
Kırmızı renkli işaretlediğim /,# karakteri en sık kullanılan bir ayırıcıdır.Ayırıcılar mavi işaretlediğim pattern kuralı önüne ve arkasına gelen simgelerdir.Diğer örnekler;

preg_match(“+[a-z]+“, $metin);
preg_match(“%[a-z]%“, $metin);
preg_match(“@[a-z]@“, $metin);
preg_match(“&[a-z]&“, $metin);

Ayrıca şablon arkasına kırmızı renkle işaretlediğim değiştiriciler de eklenebilir.Örnek

preg_match(“/[a-z]/i“, $metin);