POSIX 문자 클래스 사용PHP는 제어 문자를 일치하지만 공백을 일치하지 않습니까?
[: cntrl :]을 제외하고 [: space :]를 어떻게 제외할까요?
$message = ereg_replace("[[:cntrl:]]", "", $message);
POSIX 문자 클래스 사용PHP는 제어 문자를 일치하지만 공백을 일치하지 않습니까?
[: cntrl :]을 제외하고 [: space :]를 어떻게 제외할까요?
$message = ereg_replace("[[:cntrl:]]", "", $message);
ereg_ * (POSIX) 함수는 오랫동안 사용되지 않았습니다. 이 방법을 사용하여 계속해서는 안됩니다. POSIX Bracket Expressions[:cntrl:]
따르면
아스키 범위 [\x00-\x1F\x7F]
(또는 유니 \p{Cc}
) 및 [:space:]
는 [ \t\r\n\v\f]
로 확인을 해결한다. asciitable.com을 사용하여 해당 문자를 해결하면 [\x20\x09-\x0D]
의 제외 목록이 남습니다. "수학하기"는 [\x00-\x08\x0E-\x1F\x7F]
으로 남았습니다.
$message = preg_replace('/[\x00-\x08\x0E-\x1F\x7F]+/', '', $message);
이 VT
(수직 탭)과 FF
(용지 공급, 새로운 페이지)도
$message = preg_replace('/[\x00-\x08\x0E-\x1F\x7F\x0A\x0C]+/', '', $message);
[[:cntrl:]]
는 [\x00-\x1f\x7F]
및 [[:space:]]
는 [ \t\r\n\v\f]
(ref) 동등하므로 긴 손 방법 [\x00-\x08\x0E-\x1F\7F]
을 사용하는 것이 기본적
\t\r\n\v\f
은 X09이 X0D을 \하는 \이다)
은 "안전하지 않은 문자"를 정의 –
, 내가 질문을 업데이트 한 –
을 "탈출"감사를 정의합니다. – Howard