2012-04-22 8 views
5

ctype_alpha işlevinin olduğunu biliyorum, ancak bu dize boşluk (beyaz boşluk karakteri) içerdiğinde FALSE döndürecektir.PHP'de boşluklarla yalnızca alfabetik bir dize nasıl doğrulanır?

Alfa karakterlerine ve boşluklarına nasıl izin verebilirim, ancak başka bir şey yok mu?

+0

Kontrol etmeden önce boşlukları bir rakamla değiştirin? – DanRedux

+0

@DanRedux yalnızca dize önceden sayı içermiyorsa çalışır. –

+0

Neden? Önceden rakamlar içeriyorsa, yanlış bir şekilde yanlış döndürülür. Eğer sayıları daha sonra içeriyorsa, yanlış bir şekilde geri dönecektir. Yapacak tek şey, kötü jetonlar haline getirerek boşlukları kötü jetonlar olarak ele almaktır. – DanRedux

cevap

5
$is_alpha_space = ctype_alpha(str_replace(' ', '', $input))); 

veya

$is_alpha_space = preg_match('/^[a-z\s]*$/i', $input); 
+0

Çok teşekkürler. Birinci olanı beğendim. Sadece öğrenme amaçlı olarak merak ediyorum, bunu ilk nasıl biliyorsun? Çünkü belgelerden bile anlayamadım. – Carpet

+0

Tek bir işlev değil. Boşlukları kaldırmak için str_replace() 'yi, ardından bunun sonucunun alfabetik olduğunu kontrol etmek için' ctype_alpha() 'kullanır. – dtbarne

+0

Anladığım kadarıyla, bunun nasıl olduğunu biliyorsunuz, belgelerindeki ctype sayfası bunu göstermezse (bunu yapabilirsiniz), yoksa yapar mı? Söyleyemem. – Carpet

2
if (preg_match("^/[a-zA-Z ]+$/", $input)) { 
    // input matches 
} 

Demo: http://ideone.com/jp6Wi
Dokümanlar: http://php.net/manual/en/function.preg-match.php

+0

[Az] 'ın [sistemin yerel ayarlarına bağlı olarak farklı karakterlerle eşleşebileceğini] unutmayın (http://stackoverflow.com/questions/1930487/will-az-ever-match-accented-characters-in) -preg-pcre. –

+0

Normal ifadede bir yazım hatası var. '^ /' Yerine '/ ^' ile başlamalıdır. – toxalot

+0

Bu normal ifadenin sadece boşluk içeren bir dizeye izin vereceğini unutmayın. Bu istenen sonuç olabilir veya olmayabilir. – toxalot

0

ctype_alpha(preg_replace('/\s/', '', $mystring))

iç ifade boşluksuz dize döndürür ve sonra istediğiniz gibi ctype_alpha`` kullanmak

+0

Bu kategori altında düşüyor ** Eğer fantezi değiştirme kurallarına ihtiyacınız yoksa, her zaman 'preg_replace' yerine str_replace' kullanmalısınız. ** – toxalot

0

Boşlukları gideriniz, ancak ctype_alpha'nın bu günlerde boş bir dizede yanlış sonuçlandığını unutmayın! Yöntem kullanıyorum ...

function validateAlpha($valueToValidate, $spaceAllowed = false) { 
    if ($spaceAllowed) { 
     $valueToValidate = str_replace(' ', '', $valueToValidate); 
    } 
    if (strlen($valueToValidate) == 0) { 
     return true; 
    } 
    return ctype_alpha($valueToValidate); 
} 
İlgili konular