php – metinler ve düzenli İfadeler

33
1 PHP – Metinler ve Düzenli İfadeler Internet Tabanlı Programlama Dr. Erman Yukselturk

Upload: harper

Post on 23-Jan-2016

194 views

Category:

Documents


16 download

DESCRIPTION

PHP – Metinler ve Düzenli İfadeler. Internet Tabanlı Programlama Dr. Er man Yukselturk. function buldum($filename,$isim,$email,&$bulundu){ $ara=fopen($filename,"r"); while (!feof ($ara)) { $satir=fgets($ara ,4096); $dataarray=split(',',$satir); - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: PHP – Metinler ve Düzenli İfadeler

1

PHP – Metinler ve Düzenli İfadeler

Internet Tabanlı ProgramlamaDr. Erman Yukselturk

Page 2: PHP – Metinler ve Düzenli İfadeler

2

function buldum($filename,$isim,$email,&$bulundu){$ara=fopen($filename,"r");while (!feof ($ara)) {

$satir=fgets($ara ,4096);$dataarray=split(',',$satir);

if(($dataarray[1]==$isim) && ($dataarray[2]==$email)){$bulundu=true;

fclose($ara);return $dataarray;

}}}

Page 3: PHP – Metinler ve Düzenli İfadeler

3

Normal İfadeler / Köşeli ParantezlerKöşeli parantezler [] eşleştirilmek istenen bir liste

veya aralığı ifade ederler.

[0-9] ifadesi 0’dan 9’a kadar olan sayısal değerleri ifade ederler.

[a-z] ifadesi a’dan z’ye kadar olan küçük harfleri ifade ederler.

[A-Z] ifadesi A’dan Z’ye kadar olan büyük harfleri ifade ederler.

[a-zA-Z0-9] ifadesi 0’dan 9’a, a’dan z’ye küçük harfleri ve A’dan Z’ye büyük harfleri ifade ederler.

Page 4: PHP – Metinler ve Düzenli İfadeler

4

Normal İfadeler / Miktarlar p+ en azından bir tane p içeren metinler p* hiç veya birden fazla p içeren metinler. p? hiç veya 1 tane p içeren metinler. p{2} ardışık 2 tane p içeren metinler. p{2,3} ardışık 2 veya 3 tane p içeren metinler. p{2,} ardışık en az 2 tane p içeren metinler. p$ en son karakteri p olan metinler ^p başında p olan bütün metinler [^a-zA-Z] a’dan z’ye veya A’dan Z’ye bir karakter

bulundurmayan metinler p.p ile başlayıp başka bir karakter ile devam eden

ve sonra tekrar p içeren metinler

Page 5: PHP – Metinler ve Düzenli İfadeler

5

Normal İfadeler / Miktarlar ^.{2}$ 2 karakter uzunluğunda olan

metinler <b>(.*)</b> <b> ve </b> arasında kalan

bütün metinler p(hp)* içerinde p olan ve bu p’yi takip

eden 0 veya birden çok ph içeren bütün metinler.

Özel karakterleri arattırmak için önüne \ işareti koyabilirsiniz. ([\$])([0-9]+) bu $ işareti ile başlayıp bir veya daha fazla rakam içeren değerler

Page 6: PHP – Metinler ve Düzenli İfadeler

6

Normal İfadeler / Önceden Belirlenmiş [:alpha:]: küçük ve büyük harfler veya [A-Za-z]. [:alnum:]: küçük , büyük harfler ve sayılar veya [A-Za-

z0-9]. [:cntrl:]: Kontrol karakterleri tab, escape, or backspace. [:digit:]: rakamlar 0’dan 9’a veya [0-9]. [:graph:]: ASCII tablosunda 3’den 126’ya yazılabilen

karakterler. [:lower:]: küçük harfler veya [a-z]. [:punct:]: noktalama işaretleri ~ ` ! @ # $ % ^ & * ( ) -

_ + = { } [ ] : ; ' < > , . ? ve /. [:upper:]: büyük harfler [A-Z]. [:space:]: boşluk karakterleri boşluk, yatay tab, dikey

tab, yeni satır vs… [:xdigit:]: Hexadecimal karakterler veya [a-fA-F0-9].

Page 7: PHP – Metinler ve Düzenli İfadeler

7

PHP’de tanımlı ifade fonksiyonları$kullaniciIsmi = "Ercan";

if (ereg("([^a-z])", $kullaniciIsmi))

echo "kullanici ismi kucuk harflerden olusmalidir!";

else

echo "Butun karakterler kucuk harflerden olusuyor.";

IP if (ereg('^([0-9]{1,3}\.){3}[0-9]{1,3}$',$var))

URL:if (ereg("^[a-zA-Z0-9\-\.]+\.(com|org|net|mil|edu)$",$var))

Telefon numarası

"^(\()?([0-9]{3})(\))?( )?([0-9]{3})( )?(\-)?( )?([0-9]{4})$";

Page 8: PHP – Metinler ve Düzenli İfadeler

8

PHP’de tanımlı ifade fonksiyonları

$url = "http://www.ibu.edu.tr";

ereg("^(http://www)\.([[:alnum:]]+)\.([[:alnum:]]+)\.([[:alnum:]]+)", $url, $dizi);

echo $dizi[0]."<br>";

echo $dizi[1]."<br>";

echo $dizi[2]."<br>";

echo $dizi[3]."<br>";

echo $dizi[4];

Page 9: PHP – Metinler ve Düzenli İfadeler

9

PHP’de tanımlı ifade fonksiyonları$string="Abant İzzet Baysal Üniversitesi";

if (eregi("ü", $string)) {

echo "'$string' metininde ü veya Ü harfi bulunur!";}

$string="Abant İzzet Baysal Üniversitesi";

if (ereg("ü", $string)) {

echo "'$string' metininde ü veya Ü harfi bulunur!";}

$pswd = "ercanphp";

if (!eregi("^[a-zA-Z0-9]{8,10}$", $pswd))

echo "Gecersiz sifre!";

else

echo "Gecerli sifre!";

Page 10: PHP – Metinler ve Düzenli İfadeler

10

PHP’de tanımlı ifade fonksiyonları

$string = "Tubitak linki http://www.tubitak.org/.";

echo ereg_replace("http://([a-zA-Z0-9./-]+)$", "<a href=\"\\0\">\\0</a>", $string);

$string = "This is a test";

echo ereg_replace("( )is", “was", $string);

$string = "Dershanede yapilan ilk Quiz sonuclari ";

echo eregi_replace("( )quiz", "vize", $string);

Page 11: PHP – Metinler ve Düzenli İfadeler

11

PHP’de tanımlı ifade fonksiyonları$tarih = "30.04.1973";

list($gun, $ay, $yil) = split("\.", $tarih);

echo "Gün: $gun <br> Ay: $ay<br> Yıl: $yil<br />\n";

$cumle = "Ben Abant İzzet Baysal Universitesinde okuyorum";

print_r(split(" ",$cumle));

//Array ( [0] => Ben [1] => Abant [2] => İzzet [3] => Baysal [4] => Universitesinde [5] => okuyorum )

Spliti (küçük büyük harfe duyarlı değil)

$versiyon = "php 4.0";

echo sql_regcase($versiyon); //[Pp][Hh][Pp] 4.0

Page 12: PHP – Metinler ve Düzenli İfadeler

12

Perl’de tanımlı ifade fonksiyonları

/food/

/fo+/ (food, fool, fo4, foolish, …)

/fo{2,4}/ (fool, foool, foolish, football, …)

Page 13: PHP – Metinler ve Düzenli İfadeler

13

Perl’de tanımlı ifade fonksiyonları

Niteleyiciler (Modifier)

i küçük büyük harfe duyarsız arama yapar

g bütün uygulamalarını bulur

m metin’e birden çok satırmış gibi davranır. ^ ve $ karakterleri en baştaki ve en sondaki karakterlere karşılık gelir.

s metine bir satırmış gibi davranır. Yeni satır karakterlerini görmezden gelir. m niteleyicisinin tam karşıtıdır.

x boşlukları yok sayar

U ilk eşleşmede durur.

Page 14: PHP – Metinler ve Düzenli İfadeler

14

Perl’de tanımlı ifade fonksiyonlarıDeğişim karakterleri (Metacharacter)

\A: sadece metinin en başındaki eşleşmeyi yapar.

\b: sınırdaki kelimeyi eşleştirir.

\B: herhangi bir sınırdaki eşleşmeyi yapar.

\d: rakam eşleşmesini yapar, [0-9] ile aynı işlevi görür.

\D: rakam haricindeki herhangi bir eşleşmeyi yapar.

\s: sadece boşluk eşleştirmelerini yapar.

\S: boşluk haricindeki eşleşmeleri yapar.

[]: karakter grubunu kapsar.

(): karakter grubunu kapsar veya önceki bir referansı tanımlar.

Page 15: PHP – Metinler ve Düzenli İfadeler

15

Perl’de tanımlı ifade fonksiyonları

Değişim karakterleri (Metacharacter) /devam

$: satırın en sonunu eşleştirir.

^: satırın en başını eşleştirir.

.: yeni satır haricindeki herhangi bir karakteri eşleştirir.

\: bir sonraki değişim karakterini parantez içine alır.

\w: sadece harfler, rakamlar ve altçizgiyi eşleştirir, [a-zA-Z0-9_] ile aynıdır.

\W: \w’nin tam tersini eşleştirir. Rakam, harfler ve alt çizgi haricindeki karakterler.

Page 16: PHP – Metinler ve Düzenli İfadeler

16

Perl’de tanımlı ifade fonksiyonlarıDeğişim karakterleri (Metacharacter) /Örn

Sonunda an olan isimleri seçelim

Ercan, nurcan, ertan, mercan vs…

/an\b/

İlk linux geçen kelimeyi bulur (küçük büyük harfe duyarlı olmayan)

/\blinux\b/i

/\$\d+\g

$işaretinden sonra değerleri olan bütün metinleri verir.

Page 17: PHP – Metinler ve Düzenli İfadeler

17

PHP’deki tanımlı ifade fonksiyonları

$yiyeceklers = array("pasta", "biftek", "kumpir", "patetes");

$yiyecekler = preg_grep("/^p/", $yiyeceklers);

print_r($yiyecekler); //Array ( [0] => pasta [3] => patetes )

$satir = "vim simdiye kadar piyasaya sürülen en iyi kelime islemci programidir!";

if (preg_match("/\bVim\b/i", $satir)) print "Eşleşme bulundu!";

Page 18: PHP – Metinler ve Düzenli İfadeler

18

PHP’deki tanımlı ifade fonksiyonları$kullanici = "Isim: <b>Arda Şanlı</b> <br> Ünvan:

<b>PHP Uzmanı</b>";preg_match_all("/<b>(.*)<\/b>/U", $kullanici, $dizi);printf("%s <br /> %s", $dizi[0][0], $dizi[0][1]);

//$ ^ * ( ) + = { } [ ] | \\ : < >.$metin = "Maç bileti için 3*40 toplam 120 YTL ödedim

.";echo preg_quote($metin); //Maç bileti için 3\*40

toplam 120 YTL ödedim \.

$metin = "Odtü'nün sayfasına http://metu.edu.tr/ adresinden ulaşılabilir.";

echo preg_replace("/http:\/\/(.*)\//", "<a href=\"\${0}\">\${0}</a>", $metin);

Page 19: PHP – Metinler ve Düzenli İfadeler

19

PHP’deki tanımlı ifade fonksiyonları$taslak = "In 2007 the company faced plummeting

revenues and scandal.";

$eskikelimeler = array("/faced/", "/plummeting/", "/scandal/");

$yenikelimeler = array("celebrated", "skyrocketing", "expansion");

echo preg_replace($eskikelimeler, $yenikelimeler, $taslak);

Page 20: PHP – Metinler ve Düzenli İfadeler

20

PHP’deki tanımlı ifade fonksiyonlarıfunction kisaltma($eslenen) {

$kisaltmalar = array('WWW' => 'World Wide Web','IRS' => 'Internal Revenue Service','PDF' => 'Portable Document Format');

if (isset($kisaltmalar[$eslenen[1]]))return $eslenen[1] . " (" . $kisaltmalar[$eslenen[1]] . ")";

elsereturn $eslenen[1];

}// hedef metin$metin = "The <kisaltma>IRS</kisaltma> offers tax forms in

<kisaltma>PDF</kisaltma> format on the <kisaltma>WWW</kisaltma>.";

// hedef metin'e kisaltmalarin değerini yazdir$yenimetin =

preg_replace_callback("/<kisaltma>(.*)<\/kisaltma>/U", 'kisaltma', $metin);

print_r($yenimetin);

Page 21: PHP – Metinler ve Düzenli İfadeler

21

PHP’deki tanımlı ifade fonksiyonları

$duzensizMetin = "Servet+++++++Souza+++++++Beşliktaş+++++++++++Hakkari";

$alanlar = preg_split("/\+{1,}/", $duzensizMetin);

foreach($alanlar as $alan) echo $alan."<br />";

$pswd = "gizlipswd";

if (strlen($pswd) < 10)

echo "Şifreniz çok kısa!";

else

echo "Şifreniz geçerli!";

Page 22: PHP – Metinler ve Düzenli İfadeler

22

Metinleri karşılaştırmak$pswd = "süpergizlş";$pswd2 = "süpergizli";if (strcmp($pswd,$pswd2) != 0)

echo "Girilen şifreler eşleşmiyor!";else

echo "Girilen şifreşer eşleşiyor!";

• 0 eğer $pswd1 ve $pswd2 eşitse• -1 eğer $pswd1 $pswd2’den küçükse• 1 eğer $pswd2 $pswd1’den küçükse

$sifre = "3312345";if (strspn($sifre, "1234567890") == strlen($sifre))echo "\$Sifre sadece numaralardan oluşamaz!";//ilk metinde olup ve ikinci metinde de olan karakterlerin

sayısını veriyor

Page 23: PHP – Metinler ve Düzenli İfadeler

23

Metinleri karşılaştırmak$sifre = "a12345";

if (strcspn($sifre, "1234567890") == 0)

echo "sifre sadece numaralardan oluşamaz!";

//ilk metinde olup ikinci metinde olmayan karakterlerin sayısını veriyor.

Page 24: PHP – Metinler ve Düzenli İfadeler

24

Metinlerle UğraşmakHepsini küçük karakterlere dönüştürme

$url = "http://WWW.EXAMPLE.COM/";

echo strtolower($url); //http://www.example.com/

Hepsini büyük karakterlere dönüştürme

$cumle = "Hocam uğraş uğraş olmuyor bu PHP!";

echo strtoupper($cumle);

Sadece ilk harfi büyük yapıyor

$cumle = "Hocam uğraş uğraş olmuyor bu PHP!";

echo ucfirst($cumle);

Bütün harflerin ilk büyük yapıyor

$cumle = "Hocam uğraş uğraş olmuyo bu PHP!";

echo ucwords($cumle)

Page 25: PHP – Metinler ve Düzenli İfadeler

25

Metinlerle Uğraşmak$recete = "3 çay kaşığı rezene2 çay kaşığı ıhlamur1 tutam dereotu1 litre su";// yeni satırları <br>'e dönüştürüyorecho nl2br($recete);

Özel Karakterler• & dönüşür &amp;• " dönüşür &quot;• ' dönüşür &#039;• < dönüşür &lt;• > dönüşür &gt;

$cumle = "PHP için yeterince <<iyi>> değilim!";echo htmlspecialchars($cumle);//kaynağı gör diyince PHP için yeterince &lt;&lt;iyi&gt;&gt;

değilim!</body>

Page 26: PHP – Metinler ve Düzenli İfadeler

26

Metinlerle UğraşmakKişisel dönüşüm

$tablo = array("<b>" => "<strong>", "</b>" => "</strong>");

$html = "<b>Bu günlük PHP haberi</b>";

echo strtr($html, $tablo);

// kaynağı görüntüle dersek <body>

<strong>Bu günlük PHP haberi</strong></body>

Tagları temizlemek

$deger = "Bu <a href='http://www.ornek.com/'>örnek</a>

<b>mükemmel</b>!";

echo strip_tags($deger, "<a>");

//kaynağı görüntüle dersek <a>tag’ı hariç diğer tagları temizler

Page 27: PHP – Metinler ve Düzenli İfadeler

27

Metinlerle Uğraşmak$bilgi = "Servet Souza:[email protected]|Silvan, Turkiye";// ayraçlar (:), (|) ve (,)$ayraclar = ":|,";$ayrilmis = strtok($bilgi, $ayraclar);// $ayrilmis dizisindeki herşeyi yazdirwhile ($ayrilmis) {

echo "Parçalar = $ayrilmis<br>";// ilk parametreyi çağırma.$ayrilmis = strtok($ayraclar);

}

$ozet = "bu sunumu hazırlarken PHP'de birçok kitaba ve kaynağa baktım. Bu kaynakların her birinde değişik stratejiler ele alınmış. Size uygun stratejiler

olup olmadığını veyasize uygun stratejilerin ne olduğuna karar vermek bazen zaman alabiliyor. En çok

destek aldığım kaynak<a href=\"http://www.php.net\">PHP 5's</a> nesne tabanlı programlama.";echo strip_tags($ozet)."<br>";$kelimeler = sizeof(explode(' ',strip_tags($ozet)));echo "\$ozet toplam kelime sayısı: $kelimeler";

Page 28: PHP – Metinler ve Düzenli İfadeler

28

Metinlerle UğraşmakDizileri metin’e çevirmek

$sehirler = array("Antalya", "Ankara", "Bolu", "İstanbul");

echo implode(" | ", $sehirler); //Antalya | Ankara | Bolu | İstanbul

İlk uygulamayı bulmak (strpos)

$aranilan = "index.html";

$log = "

192.168.1.11:/www/htdocs/index.html:[2006/02/10:20:36:50]

192.168.1.13:/www/htdocs/about.html:[2006/02/11:04:15:23]

192.168.1.15:/www/htdocs/index.html:[2006/02/15:17:25]

";

// aranilan dosyaya ilk ne zaman ulaşıldı

echo $pozisyon = strpos($log, $aranilan);

// o dosyanin son satırının bulunduğu yer

echo "<br>".$pozisyon2 = strpos($log,"\n",$pozisyon);

// aranılanın ne zaman erişildiğini öğrenmek

echo "<br>".$pozisyon = $pozisyon + strlen($aranilan) + 1;

// erişilme tarihini almak

echo "<br>".$timestamp = substr($log,$pozisyon,$pozisyon2-$pozisyon);

echo "<br>"."$aranilan dosyanın ilk erişildiği zaman: $timestamp";

Page 29: PHP – Metinler ve Düzenli İfadeler

29

Metinlerle UğraşmakMetinleri değiştirme

$yazar = "[email protected]";

$yazar = str_replace("@","(at)",$yazar);

echo "Bu kodun yazarina ulasmak icin $yazar adresini kullanabilirsiniz.";

$arac = "1944 Ford";

echo substr($arac, 5); //Ford

$arac = "1944 Ford";

echo substr($arac, 0, 6); //1944 F

$arac = "1944 Ford";

echo substr($arac, 1, -5); //944

echo "<br>".substr($arac, 2, -3); //44 F

Page 30: PHP – Metinler ve Düzenli İfadeler

30

Metinlerle Uğraşmak$aranankelimeler = array("Fransız", "yabancı", "eğitim", "dil", " ");

$paragraf = "Türk eğitiminin 1845’te çizilen genel yapısı zaten Fransız örneğine göre şekillenmiştir. Daha sonraki kuruluşlarda, eğitim yasa ve yönetmeliklerinde, okulların ders programlarında Fransız etkisi alabildiğine devam etmiştir. Okullarda okutulan yabancı dil büyük bir çoğunlukla Fransızcadır, Bahriye Mektebi hariç askerî ve sivil okulların yabancı dil dersleri Fransızca öğretmeyi amaçlamıştır. Uzun yıllar Tıbbiye’de öğretim Fransızca yapıldığı gibi, dış politika ve ticaret hayatına elit yetiştiren Galatasaray Sultanisi’nin öğretim dili de Fransızcadır (Ergün,1990).";

foreach($aranankelimeler as $aranan) {

echo "$aranan kelimesi paragrafta \"",substr_count($paragraf, $aranan)."\" defa geçmiştir.<br>";

}

$numara = "1234567899991111";

echo substr_replace($numara,"************",0,12); // ************1111

echo "<br>".substr_replace($numara,"************",0,5); //************67899991111

echo "<br>".substr_replace($numara,"************",0,-5); //************91111

echo "<br>".substr_replace($numara,"************",0,-10); //************7899991111

Page 31: PHP – Metinler ve Düzenli İfadeler

31

Metinlerle Uğraşmak$text = "\t\tBir kaç kelime bir şeyler :) ... ";

echo trim($text); //(\t), (\n), (\r), (\0), (\x0b)

$veri = "Alien";

echo "<br>".str_pad($veri, 10); // produces "Alien "

echo "<br>".str_pad($veri, 10, "-=", STR_PAD_LEFT); // produces "-=-=-Alien"

echo "<br>".str_pad($veri, 10, "_", STR_PAD_BOTH); // produces "__Alien___"

echo "<br>".str_pad($veri, 10, "_", STR_PAD_RIGHT);// produces "Alien_____"

echo "<br>".str_pad($veri, 6 , "___"); // produces "Alien_“

$cumle = "Besliktas sporlu Servet Souza Sivan Turkey";

// karakterler ve frekanslarını alir

$liste = count_chars($cumle, 1); //0, 1, 2, 3, 4 kullanılabilir

print_r($liste);

foreach($liste as $harf=>$frekans)

echo "Verilen cümlede \"".chr($harf)."\""." karakteri ". " $frekans defa kullanılmıştır<br />";

Page 32: PHP – Metinler ve Düzenli İfadeler

32

Metinlerle Uğraşmak$cumle = "Besliktas sporlu Servet Souza Sivan Turkey";

$liste = str_word_count($cumle); // sadece kelime sayısını verir

$cumle = "Besliktas sporlu Servet Souza Silvan Turkey";

$liste = str_word_count($cumle, 1); // dizi olarak dondurur

print_r($liste);

foreach($liste as $harf=>$kelime)

echo "Verilen cümlede $harf. kelime = $kelime<br />";

$cumle = "Besliktas sporlu Servet Souza Silvan Turkey";

$liste = str_word_count($cumle, 2); //indeks no’su cumledeki kaçıncı karakterde başladığını gösterir

print_r($liste);

foreach($liste as $harf=>$kelime)

echo "Verilen cümlede kelime = $kelime $harf. Karakterde başlar<br />";

Page 33: PHP – Metinler ve Düzenli İfadeler

33

Metinlerle Uğraşmak$cumle = "Besliktas sporlu Servet Souza Silvan Turkey, Servet Souza

Besliktas sporlu olmak icin cok ugrasti";

$kelimeler = str_word_count($cumle,2);

$tekrar = array_count_values($kelimeler);

print_r($tekrar);