PHP de Regex İşlemi
Hepinize merhaba dostlarım :). Bu yazımda sizlere PHP programlama dilinde kullanılan (Özellikle web sitelerinden veri çekmek olsun veya bir metin içindeki değerlerde fazla olan) regex (Regular Expressions) yani düzenli ifadelerden bahsedeceğim. Çoğunlukla curl komutu ile bot yazan dostlarımın kullandığı ve curl haricinde de kullanılan bu işleme gelin yavaştan bir göz atalım
Regex (Regular Expressions) Nedir ?
Dostlarım regex yani düzenli ifadeler olarak geçen bu işlem özellikle web sayfalarından veri çekip kullanma işlemlerinde oldukça işimize yarar. Örnek vermek gerekirse anlık döviz kuru çekmemiz gerekti. Veya bir yazılım yazdık ve günlük haber gelişmelerini çekmemizi gerekti. Bu ve bunun gibi daha birçok örnekte dostlarım regex ifadeleri imdadımıza koşuyor :). Artık regex in tanımını öğrendiğimize göre yavaştan regex fonksiyonlarından örnek vermeye başlayalım :)
1-) preg_match() Fonksiyonu
Evet dostlarım gelelim ilk komutumuz olan preg_match() fonksiyonuna :). Bu methodumuz dostlarım belirttiğimiz bir ifadenin bir metin içerisinde varlığını kontrol eder. Eğer var ise 1 değerini ekrana bastırır, Ama belitilen ifade o metin içerisinde yok ise 0 değerini ekrana bastırır dostlarım. Çalışması için 2 parametre alır dostlarım:
- Belirttiğimiz değer
- Kontrol edilecek metin
şeklinde dostlarım 2 parametre alır :). Uygulama yapmak için sabırsızlanıyorsunuz dostlarım :). Hadi gelin bir örnek yapalım. Örneğimiz şu olsun dostlarım "MFSoftware Blog" yazısında "Blog" kelimesi var mı yok mu gelin kontrol ettirelim
<?php
$metin = "MFSoftware Blog"; // metnimiz
$ifade = "/Blog/i"; // aranacak metin
echo preg_match($ifade,$metin);
// Ekran Çıktısı: 1
?>
şeklinde dostlarım "Blog" kelimesinin "MFSoftware Blog" içerisinde var mı yok mu kontrol ediliyor ve haliyle "Blog" kelimesi metnimizin içerisinde yer aldığı için 1 sonucu ekranımıza bastırıldı :). Bu methodu anladığımıza göre dostlarım gelelim diğer regex fonksiyonuna :). Her bir başlıkta heyecanınızı anlıyorum dostlarım :).
2-) preg_match_all() Fonksiyonu
Diğer bir methodumuz olan preg_match_all() fonksiyonu ise dostlarım. Bu methodumuzun preg_match() fonksiyonundan farkı ise dostlarım o varlığını kontrol ettirirken bu fonksiyon ise o değer var ise kaç yerde geçiyor onun sayısını verir, geçmiyor ise 0 sayısını ekrana bastırır dostlarım. Bu da 2 parametre alır. Bunlar aşağıdaki gibidir:
- Belirttiğimiz değer
- Kontrol edilecek metin
şeklinde dostlarım 2 parametre alır. Kullanımı aynı preg_match() deki gibidir. Gelin bunu bir örnekle inceleyelim :). Örneğimiz ise "MFSoftware Blog" metni içerisinde kaç adet "o" hari geçiyor onu analiz ettirelim
<?php
$metin = "MFSoftware Blog"; // metnimiz
$ifade = "/o/i"; // aranacak metin
echo preg_match_all($ifade,$metin). " Yerde Geçiyor";
// Ekran Çıktısı: 2 Yerde Geçiyor
?>
şeklinde kodlarımızı yazdık. "o" harfini belirttiğimiz için metinde teker teker kontrol ediyor dostlarım. "o" harfi de haliyle metnimizde geçtiği için ekranımıza "2 Yerde Geçiyor" uyarısını verecektir :). Bu fonksiyonun da anlaşıldığını düşünüyorum :). Gelelim diğer fonksiyonumuza
3-) preg_replace() Fonksiyonu
Dostlarım bu fonksiyonumuz ise isminden de anlaşılacağı gibi replace yani değiştirme işlemi yapmamızda bize katkı sağlar. Mesela bir metin düşünün veya şöyle örnekleyelim "MFSoftware Blog" ifadesinde Blog yerine Site yazmamız için bu fonksiyon işimize yarayacaktır :). İşte bu ve bunun gibi durumlarda yani değiştirme durumunda bu fonksiyon rahatlıkla kullanılır dostlarım. Bu preg_match() ve preg_match_all() fonksiyonlarından farklı olarak ek bir parametre daha alarak 3 parametre ile çalışır :). Bunlar aşağıdaki gibidir
- Değiştireceğimiz kelime veya karakter
- Değiştirmek istediğimiz yeni metin
- Kontrol edilecek metin
şeklindedir dostlarım :). Hadi gelin bunu da bir örnek üzerinde yapalım. Örnek olarak "MFSoftware Blog" içerisindeki "Blog" yerine "Site" yazdırılma işlemini yapalım :).
<?php
$metin = "MFSoftware Blog"; // metnimiz
$ifade = "/Blog/i"; // işlem yapılacak kelime
echo preg_replace($ifade,"Site",$metin);
// Ekran Çıktısı: MFSoftware Site
?>
şeklinde kodumuzu yazdık dostlarım. "Blog" kelimesinin yerine "Site" olarak değiştirilmesini istedik ve fonksiyonumuz sağolsun bu işlemi metnimizde "Blog" kelimesini bulur bulmaz "Site" olarak değiştirdi ve ekranımıza "MFSoftware Site" olarak bastırdı :).
İşte dostlarım regex işlemleri için kullanılacak fonksiyonlarımız bu kadar :). Şimdi ise dostlarım gelelim regex işlemlerindeki özel karakterler ve kullanımlarına
Regex İşleminde Özel Karakterler
\d | Regex işlemlerinde bir rakam bulmamız gerektiği durumlarda bu özel karakter kullanılır |
| | Regex işlemlerinde bir metin içerisinde şekildeki karakterle ayrılmış metinlerden herhangi birisine ulaşmamıza yardımcı olur |
^ | Regex işlemlerinde bu karakter ise bir metin üzerinde metnin baş kısmında bir arama yapacağımız durumlarda kullanılır |
[a-z] | Regex işlemlerinde bu ifade a dan z ye kadar olan harfler içerisinde herhangi birinin olacağını belirteceğimiz durumlarda kullanılır |
b | Regex işlemlerinde kelimenin başını veya sonunu ifade edeceğimiz durumlarda kullanılır |
{12} | Regex işlemlerinde bir değerin kaç kez tekrar etmesini istediğimiz durumlarda kullanabiliriz (Sayı Örnektir) |
Evet dostlarım :). Bu yazımda sizlere PHP programlama dilinde regex nedir nasıl kullanılır, regex fonksiyonları ve regex işleminde özel karakterlerden bahsettim. Umarım faydalı olmuşumdur. İlk zamanlar biraz karmaşık veya zor gelebilir dostlarım anlıyorum. Her yazımda dediğim gibi bu yazımda da diyeceğim. Yapmanız gereken şeyler "İstikrarlı ve Azimli Olmak, Bolca Pratik Yapmak". Bu dediklerimi sadece yazılım ve teknolojide değil hayatınızın her alanında yaptığınız taktirde başarı sizin için kaçınılmaz olacaktır dostlarım :).
Hayallerinizi gerçekleştirmeniz ve güzel yerlere gelmeniz dileklerimle... İyi çalışmalar dilerim :)
Yazar Hakkında
Kendi Halinde Bir Backend Developer