PHP
Özet - Regex
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
-
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.
Sıradaki ders: json_encode() ile kodlama