PHP 문자열에서 제어 문자 제거
Q: 제어 문자 제거를 위한 정규식 수정
한 PHP 개발자는 이전에 STX와 같은 제어 문자를 제거하기 위해 다음 표현식을 사용했습니다. 문자열:
preg_replace("/[^a-zA-Z0-9 .\-_;!:?äÄöÖüÜß<>='\"]/","",$pString)
그러나 결과는 지나치게 제한적이어서 캐릭터를 어떻게 선택적으로 제어할 수 있는지에 대한 의문이 제기되었습니다. 제거?
A: 제어 문자 식별을 위해 특정 문자 클래스 활용
제어 문자를 정확하게 대상으로 지정하기 위해 보다 구체적인 문자 클래스를 활용할 수 있습니다:
preg_replace('/[\x00-\x1F\x7F]/', '', $input);
이 표현식 \x00-\x1F 및 \x7F 범위(처음 32자 포함) 및 \x7F(캐리지 리턴과 같은 문자 포함) 범위 내의 ASCII 코드 문자와 일치합니다.
줄 바꿈과 같은 필수 문자 보존
줄 바꿈이나 캐리지 리턴과 같은 특정 문자를 보존해야 하는 경우 해당 문자의 이스케이프 시퀀스를 제외:
preg_replace('/[\x00-\x09\x0B\x0C\x0E-\x1F\x7F]/', '', $input);
이 수정된 표현식에서 , \x0A(라인 피드) 및 \x0D(캐리지 리턴)은 문자에서 제외됩니다. class.
최신 구문 및 지원 중단
PHP 5.3.0에서 ereg_replace가 지원 중단되고 이후 PHP 7.0.0에서 제거됨에 따라 ereg_replace 대신 preg_replace를 사용합니다.
마지막으로 제어를 위한 문자 클래스 문자
간결하고 이식 가능한 대안을 위해 문자 클래스 [:cntrl:]를 사용할 수 있습니다:
preg_replace('/[[:cntrl:]]/', '', $input);
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3