2011-02-16 2 views
1
if(preg_match("/^[a-zA-Z0-9\s\!\"\№\;\%\:\?\*\(\)\<\>\/\#\$\^\&\@\-\+\_\=\|\,\.\~\{\}\[\]\'\\\\]+$/", $sometext)) 
{//only symbols from keyboard entered 
} 
else 
{//bad symbols entered 
} 

이 기능을 많이 테스트 한 결과 제대로 작동합니다. 그러나, 나는이이 문자열을 작동 발견했습니다 기호 à이 허용되지 않기 때문에preg_match 모든 키보드 기호 허용 문제가 있지만 다른 기호 금지.

how are you?'<>"\|/à 

그것은 작동하지 않을 수 있습니다. 제발 약 stripslashes에 대해 말해주지 말아요. 또한 \ 기호를 허용하려면 \\을 쓰지 않고 \\\\이라고 써야합니다. 나도 그래. 고마워.

+1

나는 작은 실수, 몇 백 슬래시가 절단을 발견했다. 마지막 문장은 : 또한 \ 기호를 허용하려면 \\ (공백없이 백 슬래시 두 개), \\ \ (공백없이 백 슬래시 네 개)를 써야 함을 발견했습니다. 나도 그래. 고마워. – Geremy

+0

방금 ​​정규식과 테스트 문자열을 테스트했으며 일치하지 않는 빈 배열을 반환했습니다. 올바르게 테스트 했습니까? – eykanal

+0

또한, 여기에있는'\\\\vs '\'\\' 'addslashes'를 사용하지 않으면 네 개의 백 슬래시를 쓸 필요가 없습니다. 두 가지면 충분하다. – eykanal

답변

0

이 내가 (? 대신에 \ 있어요) 패턴에 어떤 문자를 얻을 수없는 것하지만, 일을 나타납니다

if(preg_match("/^[a-zA-Z0-9\s!\"\?;%:?*()<>\/#$\^&@\-+_=|,.~{}\[\]'\\\\]+$/", $sometext))