2009-06-12 4 views
0

PHP로 사용자 입력을 구문 분석하고 싶습니다. 텍스트에 유효하지 않은 문자가 있는지 없는지 알려주는 함수가 필요합니다. 입력 텍스트에 잘못된 문자와 그렇지 않은 경우는 false가 포함되어있는 경우PHP : 텍스트의 유효하지 않은 문자를 감지합니다.

<?php 
function contains_invalid_characters($text) { 
    for ($i = 0; $i < 3; $i++) { 
     $text = html_entity_decode($text); // decode html entities 
    } // loop is used for repeatedly html encoded entities 
    $found = preg_match(...); 
    return $found; 
} 
?> 

함수는 TRUE를 반환해야 다음과 같이 내 초안 보인다. 유효한 문자는 다음과 같아야합니다

AZ, AZ, 0-9, äöüß, 빈 공간, '§의 $ %의 & /()=[]\?.:,;-_

당신이 말해 줄 수! 이 코딩하는 방법?이 목적에 적합한는 preg_match()인가? 그것은 다른 문자를 포함하도록 내가 나중에 쉽게 기능을 확장 할 수 있습니다 것 또한 중요합니다.

난 당신이 날 도울 수 있기를 바랍니다. 감사합니다 사전에!

답변

3

정규식을 사용하면 다음과 같이 할 수 있습니다.

function contains_invalid_characters($text) { 
    return (bool) preg_match('/[a-zA-Z0-9äöüß "!§$%&\/()=[\]\?.:,;\-_]/u', $text); 
} 

그러나 테스트하려는 텍스트와 동일한 인코딩으로 해당 코드를 인코딩해야합니다. 나는 그것을 위해 UTF-8을 사용할 것을 권한다.

+0

감사합니다. 불행히도 많은 문자에 대해 "알 수없는 수정 자"오류를 반환합니다. 처음에는 오류가 "("표시되지만 "(", 다른 문자에도 나타납니다.) 그래도 작동하도록 이스케이프 처리 할 수 ​​있습니까? – caw

+0

'/'및']'는 – Gumbo

+0

고맙습니다! 이제 "컴파일에 실패했습니다 : 오프셋 11에서 유효하지 않은 UTF-8 문자열"이라는 메시지가 나타납니다.이 오류는 "äöüß"로 인해 발생합니다. 그렇다면이 문자를 어떻게 인코딩 할 수 있습니까? – caw