2010-07-15 4 views
0

"매개 변수 1이 문자열 일 것으로 예상합니다." 그래서 나는 당신이 preg_match에 배열을 가질 수 없다고 생각합니다. 하지만 대신 무엇을 사용해야합니까? 감사합니다preg_match array

$config['forbidden_names'] = array('admin', 'moderator', 'hoster'); 


if (preg_match($config['forbidden_names'], $string)) echo "Forbidden name!"; 

편집 : in_array 어쩌면. 롤.

답변

1
if (in_array($string, $config['forbidden_names'])) 
    echo "Forbidden name!"; 

아니면 정규식을 사용해야하는 경우 바보 메신저 :

if (preg_match('/^(?:admin|moderator|hoster)$/', $string)) 
    echo "Forbidden name!"; 
+0

정규 표현식은'admin'으로 시작하거나, 어떤 위치 에든 중재자가 있거나,'hoster'로 끝나는 문자열과 일치합니다. – Gumbo

+0

@Gumbo 어이 선행. 고정되었지만 언제든지 자유롭게 편집 할 수 있습니다. – Artefacto

0

if (preg_match('/(admin|moderator|hoster)/i', $string)) echo "Forbidden name!"; 

이 BTW 차라리 새 열/설정 VAR 모델/테이블 당신의 역할에 추가 할 시도하는 사용자가 추가 할 수있는 항목을 관리합니다. 이건 내게 불안해.

+0

정확히 우리가 원하지 않는 것입니다. 이 배열은 예제 일뿐입니다. –

+0

매우 나쁜 예를 들면, 사용자가 자신의 역할을 편집 할 수있는 양식을 만들 수 있고 dom을 편집하여 자신에게 관리 역할을 할당 할 수 있습니다. 그래서 그는 무엇을 확신하지 못한다. – antpaw

1

변경하여 두 번째 줄에 당신이 정말로 정규식 문자열을 검색 할 필요가없는 경우가 느리기 때문에

if (in_array($string, $config['forbidden_names'])) echo "Forbidden name!"; 

는 preg_match 정규 표현식을 사용하여, 당신은 그것에서 멀리 유지해야한다.