2012-01-10 9 views
0

사용자의 사용자 이름을 확인하려고합니다. 30 자 이하의 문자와 숫자를 사용할 수 있기를 바랍니다.특정 필터 찾기 PHP

나를 위해이 기능을 수행 할 수있는 PHP 필터가 내장되어 있습니까? 그 수동 정규식 것들이 내 머리를 다치게 ...

+0

http://stackoverflow.com/questions/1330693/validate-username-as-alphanumeric-with-underscores – NoName13

+0

불행히도 정규식은 당신이 설명하는 직업을위한 최고의 도구입니다. http://www.regexbuddy.com과 같은 것/그들에 대해 배우기에 좋은 도구입니다! 그리고 나는 최고의 정규 표현식으로'/^[a-z0-9] {1,30} $/i'와 함께 갈 것입니다! – cmbuckley

+0

LOL ... 답변은 모두 똑같은 아이디어입니다! –

답변

2

필터가 내장되어 있지 않습니다.

learning regular expressions을 고려해 볼 수도 있습니다. 이 아닙니다.

$valid = (strlen($username) <= 30 && preg_match("#^[a-z0-9A-Z]+$#", $username)); 
+1

'strlen()'을 사용하는 대신에 정규 표현식에서 한정 기호를 사용하는 것을 고려하십시오. – FtDRbwLXw6

0

그러나이 작품 간단한 정규식을 가지고,이 특정 일에 대한 필터가 없습니다 :

function isValidUsername($username) { 
    return (strlen($username) <= 30) && (preg_match("/^[a-z0-9]+$/i", $username) == 1); 
} 
0

는 여기를해야하는 기능입니다. 나는 정규 표현식의 작동 방식을 배우는 데 시간을 할애 할 것을 권장한다. 그것들은 프로그래머의 도구 상자에서 가장 강력하고 유용한 도구 중 하나입니다.

업데이트 : 위 주석에서 구분 기호 제안을 사용하여, 약간 내 기능을 단순화 :

업데이트 2 : 그 $을 보장하기 위해 추가/D 패턴을 수정하는 것은 \ n을 상대로 경기를 방지 할 수 있습니다.

function isValidUsername($name) 
{ 
    return preg_match("/^[a-zA-Z0-9]{1,30}$/D", $name); 
} 
0

이러한 요구 사항을 충족시키기 위해 PHP에는 아무 것도 내장되어 있지 않습니다. 난 당신이 디자인 비평을 요청하지만, 사용자 이름이 정말 필요하면 열심히 생각하십시오하지 않았다 알고

$valid = (bool)preg_match('/^[a-zA-Z0-9]{1,30}$/', $username); 

: 여기에 비록 당신이 필요로하는 것 정규식이다. 그렇지 않다면 전자 메일 주소를 사용하는 것이 훨씬 사용자 친화적이기 때문에 전자 메일 주소를 사용하는 것이 좋습니다. 어쨌든 사용자에게 해당 정보를 요청할 가능성이 큽니다.

+0

그래서 나는 말할 것이다. if ($ _POST [ 'username'] == $ valid) {echo "username is valid". ... . 그러면 $ username이 될 것입니까? – Depetrify

+0

@Depetrify : 아니요, 확인하려는 사용자 이름이'$ _POST [ 'username']'에 있으면 위의 코드에서'$ username' 대신 그 것을 사용할 것입니다. '$ valid'는'TRUE' 또는'FALSE'가 될 것이고 거기에서 갈 수 있습니다. – FtDRbwLXw6