2011-09-14 4 views
0

검색 기능을 만드는 중입니다. 사용자는 a-z A-Z 및 0-9 만 사용할 수 있습니다. $ var에 특수 문자가 아닌 텍스트 나 숫자 만 포함되어 있는지 어떻게 확인합니까?변수에 텍스트 또는 숫자가 포함되어 있는지 확인하십시오.

은 이런 식으로 뭔가를 시도 : 사람이 똑똑한 솔루션이있는 경우

if (!preg_match('/[^a-z]/i', $search) { 
$error = "error..."; 
} 

알려 주시기 바랍니다. 그것은 또한 특수 문자를 검사하는 무언가 일 수도 있습니다.

+0

확인 같은데 - 왜'/ [^ A-ZA-Z0-9] /',하지만? –

+0

공백을 허용하지 않습니까? –

+0

공백을 허용해야합니다. – 2by

답변

2

당신은 꽤 많이 있습니다. 다만이 같은 정규 표현식에 숫자 0-9를 추가

if(preg_match('/[^a-z0-9]/i', $search)) 
{ 
    $error = "Error..."; 
} 

/i 플래그는 너무 A-Z가 문자 목록 내에서 필요하지 않은, 사건을 무시하는 표현을 알려줍니다. 또한 preg_match()하지 일치 아무것도 가지고 있는지 확인하면서 원래의 코드에서

, 당신은 문자 나 숫자 아니었다 아무것도 찾고 있었다 - 당신은 이중 부정을 만들었습니다. 위 코드는 이 아닌 문자이거나 인 경우 if()을 실행합니다. 댓글에서 @brain에 대한 전체 크레디트.


다른 문자는, 단순히 괄호 안에 문자에 추가 할 수 있도록하려면 :

if(preg_match('/[^a-z0-9 \.]/i', $search)) 
{ 
    $error = "Error..."; 
} 

이 예는 공간과 . (점) 수 있습니다. 이 같은

+0

이 경우 문제는 문자열에 잘못된 문자가있는 경우 preg_match가> 0을 반환해야한다는 것입니다. 그러니 "!"를 제거하십시오. 또한 하나 더 필요) "). :-) – brain

+0

흠, 내가 검색 할 때마다 $ 오류가 발생합니다. – 2by

+0

아 좋아, 이제 작동합니다. 내가 선택한 몇 가지 특수 문자를 추가하려면 어떻게해야합니까? – 2by

2

뭔가 :

if(!preg_match('/^[a-zA-Z0-9]+$/', $search)) { 
    // error 
} 
+0

+ $는 무엇을합니까? – 2by

+0

[..] +는 좋은 문자가 적어도 한 번 존재해야 함을 의미합니다. ^와 $는 라인 내 어디에서나 전체 라인과 일치한다는 것을 의미합니다. 원래. – brain

관련 문제