PHP 문자열에서 제어 문자 제거
Q: 제어 문자 제거를 위한 정규식 수정
한 PHP 개발자는 이전에 문자열에서 STX와 같은 제어 문자를 제거하기 위해 다음 표현식을 사용했습니다.
preg_replace("/[^a-zA-Z0-9 .\-_;!:?äÄöÖüÜß<>='\"]/","",$pString)
그러나 결과는 지나치게 제한적이어서 제어 문자를 어떻게 선택적으로 제거할 수 있습니까?
A: 제어 문자 식별을 위해 특정 문자 클래스 활용
제어 문자를 정확하게 타겟팅하기 위해 보다 구체적인 문자 클래스를 활용할 수 있습니다.
preg_replace('/[\x00-\x1F\x7F]/', '', $input);
이 표현식은 처음 32자를 포함하는 x00-x1F 및 x7F 범위 내의 ASCII 코드와 캐리지 리턴과 같은 문자를 포함하는 x7F를 사용하는 문자를 일치시킵니다.
줄 바꿈과 같은 필수 문자 보존
줄 바꿈이나 캐리지 리턴과 같은 특정 문자를 보존해야 하는 경우 해당 문자의 이스케이프 시퀀스를 제외할 수 있습니다.
preg_replace('/[\x00-\x09\x0B\x0C\x0E-\x1F\x7F]/', '', $input);
이 수정된 표현식에서 x0A(줄 바꿈) 및 x0D (캐리지 리턴)은 문자 클래스에서 제외됩니다.
최신 구문 및 사용 중단
PHP 5.3.0 및 해당 버전에서 ereg_replace가 사용되지 않는다는 점에 유의하는 것이 중요합니다. PHP 7.0.0에서는 이후 제거 시 ereg_replace보다 preg_replace를 사용해야 합니다.
마지막으로 제어 문자용 문자 클래스
간결하고 이식 가능한 대안을 위해 문자 클래스 [:cntrl:] 취업 가능:
preg_replace('/[[:cntrl:]]/', '', $input);
위 내용은 PHP 문자열에서 제어 문자를 효과적으로 제거하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!