2010-06-02 4 views
0

대체 프런트 엔드에서 데이터를 정리하기 위해 최근에 자바 스크립트 RegExp를 작성했습니다. 이제 PHP 백엔드와 동일하게 수행해야하지만 잠시 동안 PHP로 작업하지 않아야합니다. 수고. 아래는 자바 스크립트 RegExp입니다, 누군가가 제발 PHP로 변환 도와 주시겠습니까?PHP RegEx string

var illegalChars = /[\(\)\<\>\,\;\:\.\~\@\#\$\!\%\^\&\*\'\?\(\)\+\=\{\}\`\\\/\"\[\]]/gi; 
var siteSuggest = $(this).val().toUpperCase().split(' ').join('').replace(new RegExp(illegalChars), ""); 

그래서, 요약, 내가 변수가 SQL에서 데이터베이스 또는 테이블을 만드는 데 사용되는 바와 같이, 변수를 대문자로, 전 세계적으로 잘못된 문자를 모두 제거 공간 &을 제거 할.

+0

모든 * 문자를 이스케이프하지 않아도되고 식에'()'가 두 번 있다고 생각합니다. –

+0

건배 펠릭스, 그 중 하나를 살펴 보겠습니다. – Mat

답변

10

정직하게 말하면, 모든 나쁜 문자를 찾으려는 시도보다는 좋은 문자를 지정하는 것이 더 나을 것이라고 생각합니다. 결국 잊어 버린 비 ASCII 문자가 많이 있습니다. 나는 다음과 같이 할 것입니다 :

$regex = '#[^a-z0-9_]#i'; 
$val = preg_replace($regex, '', $val); 
$val = strtoupper($val); 

이 정규식에는 모든 문자, 숫자 및 _가 허용됩니다. 원하는 것이 더 있으면 문자 클래스에 추가하십시오.

var illegalChars = /[^a-z0-9_]/gi; 
var siteSuggest = $(this).val().replace(new RegExp(illegalChars), '').toUpperCase(); 
+1

+1 화이트리스트는 항상 블랙리스트 –

+0

+1보다 낫습니다. 단지 '\ W' 또는'[^ \ w]';) – Matt

+0

을 사용할 수 있습니다. 또한 아무 것도 아닌 공백으로 바꾸거나 결과가 더러워 보일 수 있습니다. – Sylverdrag

0
:이처럼 JS를 조정할 수 있습니다

정규식에 공백 (문자 클래스의 시작 부분에있는 ^는 부정이다) 일치하기 때문에, 공간을 분할 할 필요가 없습니다 ...

 

$illegal_chars = array(' ', ';', '~', '@', ...); 
strtoupper(str_replace($illegal_chars, '', $value));