2009-08-07 6 views
0

자유 형식 folksonomy 시스템에 대해 제출 된 태그의 값을 확인하기위한 정규식을 만들려고합니다. 여기에 내가 가진 것이있다.freksonomy 태그 검사 정규식

if (!preg_match('/([^-\\[email protected]\'])+/',$proposedtag)) { 
    //true, good 
    return true; 
} else { 
    //false, bad characters 
    return false; 
} 

내가 허용 할 : 하이픈, 백 슬래시, 슬래시, A-Z, A-Z, 0-9, 기간, 기호, 단일 따옴표에서, 밑줄, 그리고 다른 모든 허용.

나는

그러나 내 코드는 위의 다른 문자 (예 : +로) 허용하는 것 ... 부정 된 문자 클래스는이에 갈 수있는 방법입니다 확신, 나는 이유를 모르겠어요. 또한 부주의로 SQL injection을 실수로 허용하지 않을지 확신 할 수 없습니다. 어떤 팁?

답변

2

문자 클래스의 백 슬래시 문자로 이스케이프 문제가 발생한다고 생각합니다. 대신이 방법을 사용해보십시오. 내가 먹인 테스트에서 더 잘 작동하는 것 같습니다. 백 슬래시 (마지막으로 이동 했음)에서 이중 이스케이프 처리에 유의하십시오.

if (!preg_match('/([^\[email protected]\'\\\\])+/',$proposedtag)) { 
+0

이것은 지금까지 저에게 효과적입니다. 그러나 나는 이것을 다음과 같이 수정했다. '/([[$\-\/a-zA-Z0-9\[email protected]\'\\\\\)) +/'는 슬래시를 포함한다. – jjclarkson

+0

체크 표시를 누르기 전에 몇 가지 테스트를 더 실시 할 예정입니다.) – jjclarkson