2012-04-22 2 views
5

문자열이 공백 (공백 문자)을 포함 할 때 FALSE을 반환하지만이 함수는 ctype_alpha이라는 것을 알고 있습니다.PHP에서 공백으로 알파벳순 문자열 만 유효성을 검사하는 방법은 무엇입니까?

알파 문자 및 공백을 허용하려면 어떻게해야합니까?

+0

확인하기 전에 공백을 숫자로 바꿉니 까? – DanRedux

+0

@DanRedux는 문자열에 숫자가 포함되어 있지 않은 경우에만 작동합니다. –

+0

왜? 숫자가 미리 포함되어 있으면 올바르게 false를 반환합니다. 숫자 뒤에 숫자가 포함되어 있으면 false를 올바르게 반환합니다. 잘못된 토큰을 나쁜 토큰으로 바꾸어 공백을 나쁜 토큰으로 처리합니다. – DanRedux

답변

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

또는

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

고마워요. 나는 첫번째 것을 좋아한다. 나는 단지 학습 목적으로 궁금 해서요, 그 첫 번째 것에 대해 어떻게 아십니까? 왜냐하면 나는 문서로도 말할 수 없기 때문입니다. – Carpet

+0

그것은 하나의 기능이 아닙니다. 그것은'str_replace()'를 사용하여 공백을 제거한 다음'ctype_alpha()'를 사용하여 그 결과가 알파벳순인지 확인합니다. – dtbarne

+0

문서의 ctype 페이지에서이를 지적하지 않을 때 (또는 그렇게 할 수 있음) 어떻게 알 수 있습니까? 나는 말할 수 없다. – Carpet

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

데모 : http://ideone.com/jp6Wi
문서 : http://php.net/manual/en/function.preg-match.php

+0

'[az]'는 [시스템의 로켈 설정에 따라 다른 문자와 일치 할 수 있습니다] (http://stackoverflow.com/questions/1930487/will-az-ever-match-accented-characters-in) -preg-pcre). –

+0

정규식에 오타가 있습니다. 그것은'^ /'보다는'/ ^'로 시작해야합니다. – toxalot

+0

이 정규식은 공백 만있는 문자열을 허용합니다. 그것은 원하는 결과 일 수도 아닐 수도 있습니다. – toxalot

0

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

내부 표현은 공백없이 문자열을 반환하고 당신은 당신이 원하는대로 ctype_alpha`` 사용

+0

이것은 **의 범주에 해당합니다 ** 환상적인 대체 규칙이 필요하지 않으면'preg_replace' 대신 항상'str_replace'를 사용해야합니다. ** – toxalot

0

스페이스를 제거하는 것은 방법이지만, 요즘 빈 문자열에는 ctype_alpha 결과가 false라는 것을 기억하십시오! 사용하는 방법 아래 ...

function validateAlpha($valueToValidate, $spaceAllowed = false) { 
    if ($spaceAllowed) { 
     $valueToValidate = str_replace(' ', '', $valueToValidate); 
    } 
    if (strlen($valueToValidate) == 0) { 
     return true; 
    } 
    return ctype_alpha($valueToValidate); 
} 
관련 문제