CodeBlanks Logo Icon CodeBlanks

Özet - Regex

PHP kursu · İleri seviye · Ders 47/92

preg_match, preg_replace ve karakter sınıflarıyla e-posta doğrulama fonksiyonu yazarsın.

Özet - Regex

Bu grupta düzenli ifadeleri öğrendin. Üç ana fonksiyon: preg_match ilk eşleşmeyi, preg_match_all tümünü bulur, preg_replace eşleşeni değiştirir.

Desenler ayraçlar arasına yazılır: /.../. Karakter sınıfları [a-z], \d gibi; quantifier'lar *, +, ?, {n,m}. Parantezle yakalama grubu (...) oluşur, $matches[1] veya $1 ile başvurulur.

Şimdi bunları bir arada kullanan iki mini görev geliyor: e-postayı önce temizle, sonra doğrula.

filter_var mı, preg_match mı?

PHP, sık desenler için hazır süzgeçler sunar. E-posta için filter_var($email, FILTER_VALIDATE_EMAIL) kullanılır; false dönerse geçersizdir.

Bu, e-posta gibi iyi bilinen biçimlerde daha kısa ve hızlıdır. Ancak kendine özel bir biçim istersen (örneğin telefon numarası biçimi), preg_match ile özel desen yazman gerekir.

İkisi de yer yer kullanılır: önce preg_replace ile boşluk temizle, sonra filter_var ile doğrula.

Uygulama E-postadaki boşlukları temizle

normalizeEmail(string $email): string fonksiyonunu yaz. preg_replace ile deseni "/\s+/", yerine "" vererek tüm boşlukları kaldırsın ve sonucu döndürsün. Aşağıdaki iki echo çağrısı zaten yazılı.

Örnek çözümü göster
string { return preg_replace("/\s+/", "", $email); } yaz.
Örnek çözüm:
<?php
// normalizeEmail: preg_replace ile boşlukları temizle

// normalizeEmail fonksiyonunu tanımla
function normalizeEmail(string $email): string {
    return preg_replace("/\s+/", "", $email);
}

echo normalizeEmail(" user @example.com ") . "\n";
echo normalizeEmail("user@exa mple.com") . "\n";

Uygulama E-posta biçimini doğrula

isValidEmail(string $email): bool fonksiyonunu yaz. preg_match ile "/^[\w.]+@[\w]+\.[a-z]{2,}$/" desenini kullan; eşleşirse true, yoksa false döndürsün. Sonucu === 1 ile karşılaştır. Aşağıdaki dört echo çağrısı zaten yazılı.

Örnek çözümü göster
bool { return preg_match("/^[\w.]+@[\w]+\.[a-z]{2,}$/", $email) === 1; } yaz.
Örnek çözüm:
<?php
// isValidEmail: preg_match ile e-posta biçimini doğrula

// isValidEmail fonksiyonunu tanımla
function isValidEmail(string $email): bool {
    return preg_match("/^[\w.]+@[\w]+\.[a-z]{2,}$/", $email) === 1;
}

echo isValidEmail("user@example.com") ? "geçerli\n" : "geçersiz\n";
echo isValidEmail("user@example") ? "geçerli\n" : "geçersiz\n";
echo isValidEmail("user@.com") ? "geçerli\n" : "geçersiz\n";
echo isValidEmail("@example.com") ? "geçerli\n" : "geçersiz\n";

Kendini test et

  1. Bir metindeki tüm rakamları X ile değiştirmek için hangi fonksiyon?

    • preg_match
    • preg_replace
    • preg_match_all
    • filter_var
    Cevabı göster

    preg_replace — Doğru. preg_replace eşleşen parçaları yeni metinle değiştirir.

İleri seviye bölümündeki tüm dersler