← Blog'a Don
PHP Dersleri

PHP ile Regular Expression (Regex): Desenlerle Veri Doğrulama Rehberi

5 ay once 5 ay once #112
PHP ile Regular Expression (Regex): Desenlerle Veri Doğrulama Rehberi

🧠 PHP ile Regular Expression (Regex): Desenlerle Veri Doğrulama Rehberi

Web uygulamalarında kullanıcıdan alınan verileri doğrulamak veya metin içinde belirli bir kalıbı bulmak isteriz.
İşte tam bu noktada Regular Expression (Regex) devreye girer.

PHP’de regex, metinlerde arama, eşleşme, doğrulama ve değiştirme işlemlerinde kullanılan güçlü bir araçtır.
Bu yazıda regex’in mantığını, PHP’de nasıl kullanıldığını ve pratik örnekleri öğreneceğiz. 🚀


🔹 1. Regular Expression (Regex) Nedir?

Regex, “regular expression” yani düzenli ifade anlamına gelir.
Metinlerde belirli desenleri tanımlamak için kullanılır.

Örneğin:

  • Bir e-posta adresi doğru formatta mı?

  • Bir telefon numarası 10 haneli mi?

  • Metin “php” kelimesini içeriyor mu?

Bunların hepsi regex ile kolayca kontrol edilir.


⚙️ 2. PHP’de Regex Nasıl Kullanılır?

PHP’de regex işlemleri için genellikle şu fonksiyonlar kullanılır:

FonksiyonAçıklama
preg_match()Desen eşleşmesi var mı kontrol eder
preg_match_all()Tüm eşleşmeleri bulur
preg_replace()Eşleşen değerleri değiştirir
preg_split()Metni regex desenine göre böler

Regex deseni her zaman / işaretiyle başlar ve biter.

Örnek:

<?php $metin = "Ben PHP öğreniyorum."; if (preg_match("/PHP/", $metin)) { echo "Metin içinde 'PHP' geçti!"; } ?>

Çıktı:

Metin içinde 'PHP' geçti!

🔸 3. Regex Desen Temelleri

SembolAnlamıÖrnek
.Herhangi bir karaktera.b → “acb”, “a1b”
^Satır başı^Merhaba
$Satır sonuPHP$
*0 veya daha fazla tekrara*
+1 veya daha fazla tekrara+
?0 veya 1 tekrarcolou?r → “color”, “colour”
[]Belirli karakter kümesi[abc] → “a” veya “b” veya “c”
[^]Hariç karakterler[^0-9] → rakam olmayan
{n}Tam olarak n tekrar[0-9]{3} → “123”
{n,}En az n tekrar[0-9]{2,}
{n,m}n ile m arası tekrar[0-9]{2,4}
``Veya (OR)
()Grup oluşturur(abc)+

🧩 4. Örnek 1: Email Doğrulama

<?php $email = "metin@example.com"; if (preg_match("/^[a-z0-9._-]+@[a-z0-9.-]+\.[a-z]{2,4}$/i", $email)) { echo "✅ Geçerli e-posta adresi!"; } else { echo "❌ Geçersiz e-posta!"; } ?>

Açıklama:

  • ^ → başlangıç

  • [a-z0-9._-]+ → kullanıcı adı kısmı

  • @ → zorunlu “@” işareti

  • [a-z0-9.-]+ → alan adı

  • \. → nokta

  • [a-z]{2,4} → uzantı (ör. com, net, org)

  • $ → bitiş


📱 5. Örnek 2: Türk Telefon Numarası Doğrulama

<?php $tel = "05321234567"; if (preg_match("/^0[0-9]{10}$/", $tel)) { echo "✅ Geçerli telefon numarası!"; } else { echo "❌ Geçersiz numara!"; } ?>

Açıklama:

  • ^0 → 0 ile başlamalı

  • [0-9]{10} → ardından 10 rakam gelmeli

  • $ → bitiş


🔢 6. Örnek 3: Sadece Sayı Kontrolü

<?php $deger = "12345"; if (preg_match("/^[0-9]+$/", $deger)) { echo "✅ Sadece sayıdan oluşuyor!"; } else { echo "❌ Geçersiz karakter var!"; } ?>

🔡 7. Örnek 4: Sadece Harf (Türkçe Karakterler Dahil)

<?php $isim = "Metin Demir"; if (preg_match("/^[a-zA-ZçÇğĞıİöÖşŞüÜ\s]+$/u", $isim)) { echo "✅ Geçerli isim formatı!"; } else { echo "❌ Geçersiz karakter içeriyor!"; } ?>

Açıklama:

  • \s → boşluk karakterine izin verir

  • u → UTF-8 desteği (Türkçe karakterler için şart)


🧮 8. Örnek 5: Şifre Güvenlik Kontrolü

Şifre en az 8 karakter, bir büyük harf, bir küçük harf, bir rakam ve bir özel karakter içermeli.

<?php $sifre = "Php@2025"; if (preg_match("/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$/", $sifre)) { echo "✅ Şifre güçlü!"; } else { echo "❌ Şifre zayıf!"; } ?>

Açıklama:

  • (?=.*[a-z]) → en az bir küçük harf

  • (?=.*[A-Z]) → en az bir büyük harf

  • (?=.*\d) → en az bir sayı

  • (?=.*[@$!%*?&]) → özel karakter

  • {8,} → en az 8 karakter


🔍 9. Örnek 6: URL Kontrolü

<?php $url = "https://www.example.com"; if (preg_match("/^(https?:\/\/)?(www\.)?[a-z0-9.-]+\.[a-z]{2,6}(\/[a-zA-Z0-9#?&=.-]*)*$/", $url)) { echo "✅ Geçerli URL!"; } else { echo "❌ Geçersiz URL!"; } ?>

✂️ 10. Örnek 7: Metin Değiştirme (preg_replace())

<?php $metin = "Bugün hava kötü ama yarın güzel olacak."; $yeni = preg_replace("/kötü/", "güzel", $metin); echo $yeni; ?>

Çıktı:

Bugün hava güzel ama yarın güzel olacak.

🔠 11. Örnek 8: Kelimeleri Bölme (preg_split())

<?php $metin = "PHP, JavaScript, Python, C#"; $kelimeler = preg_split("/,\s*/", $metin); print_r($kelimeler); ?>

Çıktı:

Array ( [0] => PHP [1] => JavaScript [2] => Python [3] => C# )

🧾 12. preg_match_all() ile Tüm Eşleşmeleri Bulma

<?php $metin = "PHP, JavaScript ve PHP harika diller."; preg_match_all("/PHP/", $metin, $sonuclar); print_r($sonuclar); ?>

Çıktı:

Array ( [0] => Array ( [0] => PHP [1] => PHP ) )

🧠 13. Regex Kullanırken Dikkat Edilmesi Gerekenler

✅ Desenlerin başına ve sonuna / eklemeyi unutma.
i bayrağı → büyük-küçük harf duyarsız arama yapar.
u bayrağı → UTF-8 (Türkçe karakterler) desteği sağlar.
✅ Karmaşık desenlerde yorum satırları veya regex101.com gibi test araçlarını kullan.


💡 14. PHP Regex Bayrakları (Modifiers)

BayrakAçıklama
iBüyük/küçük harf duyarsız
mÇok satırlı arama (multi-line)
sSatır sonlarını da . içine dahil eder
uUTF-8 desteği sağlar
gGlobal (tüm eşleşmeleri bulur – PHP’de preg_match_all kullanılır)

🏁 Sonuç

Regex, PHP’de veri doğrulama ve metin işleme için en güçlü araçlardan biridir.
İster bir e-posta doğrulama, ister şifre kontrolü, ister veri temizleme işlemi yap;
regex ile bunu birkaç satır kodla çözebilirsin. ⚡

Özet:

  • 🔍 preg_match() → arama

  • ✂️ preg_replace() → değiştirme

  • 📚 preg_match_all() → tüm eşleşmeleri bul

  • 🧩 preg_split() → metni parçala

Regex ilk başta karmaşık görünse de pratik yaptıkça vazgeçilmez hale gelir. 💪