Regex
Regex, yani Düzenli İfadeler, PHP'de metin işleme ve doğrulama işlemlerinde kritik bir araçtır. Özellikle kullanıcı girişlerini kontrol etmek, veri doğrulama yapmak, metinlerden belirli bilgileri çıkarmak veya formatları standardize etmek için kullanılır. PHP, preg_match, preg_match_all, preg_replace ve preg_split gibi yerleşik fonksiyonlarla Regex kullanımını destekler. Bu fonksiyonlar, karmaşık desenleri hızlı ve güvenli bir şekilde uygulamanıza imkan tanır.
Regex kullanımında PHP sözdizimi, veri yapıları, algoritmalar ve nesne yönelimli programlama ilkeleri kritik rol oynar. Örneğin, gruplama, karakter sınıfları, kuantifikatörler ve satır başı/sonu işaretçileri ile etkili desenler oluşturabilirsiniz. Bu tutorial, ileri düzey PHP geliştiricileri için Regex’in pratik kullanımını, olası performans tuzaklarını ve hataları önleme tekniklerini kapsar. Okuyucular, Regex ile metin analizini nasıl optimize edeceklerini, güvenli ve ölçeklenebilir çözümler oluşturmayı ve gerçek dünya PHP projelerinde Regex’in nasıl uygulanacağını öğrenecekler.
Temel Örnek
php<?php
// Temel Regex örneği
$metin = "Mailim: [email protected], telefonum: 5321234567.";
// Tüm sayıları bul
preg_match_all('/\d+/', $metin, $sayilar);
echo "Bulunan sayılar: ";
print_r($sayilar[0]);
// E-posta doğrulama
if (preg_match('/[a-zA-Z0-9._%-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}/', $metin, $eposta)) {
echo "Bulunan e-posta: " . $eposta[0];
} else {
echo "Geçerli e-posta bulunamadı.";
}
?>
Bu örnekte, $metin değişkeni bir e-posta ve telefon numarası içerir. preg_match_all fonksiyonu ile \d+ deseni kullanılarak metindeki tüm sayı dizileri yakalanır. + kuantifikatörü, “bir veya daha fazla” anlamına gelir ve sonuçlar $sayilar dizisine atanır. print_r ile sonuçları görüntüleyebiliriz.
E-posta doğrulama için preg_match kullanılır ve desen [a-zA-Z0-9._%-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,4} e-posta formatını kontrol eder. Eğer eşleşme bulunursa e-posta yazdırılır, bulunmazsa kullanıcıya bilgi verilir. Bu temel örnek, PHP’de Regex ile veri çekme ve doğrulama mantığını ve pratik uygulamasını gösterir.
Pratik Örnek
php<?php
// Nesne yönelimli Regex doğrulama
class Dogrulama {
private string $emailDesen = '/^[a-zA-Z0-9._%-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/';
private string $telefonDesen = '/^5\d{9}$/';
public function emailDogrula(string $email): bool {
return preg_match($this->emailDesen, $email) === 1;
}
public function telefonDogrula(string $telefon): bool {
return preg_match($this->telefonDesen, $telefon) === 1;
}
}
$dogrulama = new Dogrulama();
$epostalar = ["[email protected]", "yanlis"];
$telefonlar = ["5321234567", "12345"];
foreach ($epostalar as $email) {
echo $email . " geçerli mi? " . ($dogrulama->emailDogrula($email) ? "Evet" : "Hayır") . "\n";
}
foreach ($telefonlar as $telefon) {
echo $telefon . " geçerli mi? " . ($dogrulama->telefonDogrula($telefon) ? "Evet" : "Hayır") . "\n";
}
?>
Bu gelişmiş örnekte, Dogrulama sınıfı içinde özel desenler tanımlanmıştır. emailDogrula ve telefonDogrula metotları, girilen verinin belirlenen Regex desenine uyup uymadığını boolean olarak döndürür. Bu OOP yaklaşımı, doğrulama mantığını merkezi hale getirir, yeniden kullanılabilirliği artırır ve kodun bakımını kolaylaştırır. Regex desenleri, formlar, veri importları ve API girişlerinde güvenli ve etkin doğrulama sağlar.
PHP’de Regex ile çalışırken en iyi uygulamalar, desenlerin okunabilir ve sürdürülebilir olmasını sağlamak, mantığı fonksiyon veya sınıflarda kapsüllemek ve PHP’nin yerleşik fonksiyonlarını etkin kullanmaktır. Aşırı backtracking oluşturan desenlerden kaçınılmalıdır. Yaygın hatalar arasında yanlış kuantifikatör kullanımı, bellek sızıntısı ve hatalı hata yönetimi yer alır. Regex optimizasyonu için regex101.com gibi araçlar kullanılabilir, kuantifikatörler doğru seçilmeli ve girişler temizlenmelidir. Güvenlik, Regex kullanımlarında aşırı kaynak tüketimini ve desen enjeksiyonlarını önlemek için kritik öneme sahiptir.
📊 Referans Tablosu
PHP Element/Concept | Description | Usage Example |
---|---|---|
\d | Herhangi bir rakam | preg_match('/\d/', '123') |
\w | Harf, rakam veya alt çizgi | preg_match('/\w/', 'abc_123') |
+ | Önceki öğeden bir veya daha fazla tekrar | preg_match('/\d+/', '12345') |
* | Önceki öğeden sıfır veya daha fazla tekrar | preg_match('/a*/', 'aaab') |
^ | Satır başı | preg_match('/^Merhaba/', 'Merhaba Dünya') |
$ | Satır sonu | preg_match('/Dünya$/', 'Merhaba Dünya') |
Regex’i PHP’de öğrenmek, veri doğrulama, bilgi çıkarma ve metin manipülasyonu konusunda etkin ve güvenli çözümler sağlar. Algoritmalar, veri yapıları ve OOP prensipleri ile birleştirildiğinde, ölçeklenebilir ve bakımı kolay sistemler inşa etmek mümkündür. İleri seviye konular arasında lookahead, lookbehind, isimlendirilmiş gruplar ve recursive desenler yer alır ve bunlar gerçek dünya PHP projelerinde uygulanabilir.
🧠 Bilginizi Test Edin
Bilginizi Test Edin
Bu interaktif sınavla kendini test et ve konuyu ne kadar iyi anladığını gör
📝 Talimatlar
- Her soruyu dikkatle okuyun
- Her soru için en iyi cevabı seçin
- Quiz'i istediğiniz kadar tekrar alabilirsiniz
- İlerlemeniz üstte gösterilecek