0
특수 문자를 제거하는 PHP 스크립트가 있지만 불행히도 일부 중국어 문자도 제거됩니다.PHP str_replace가 중국어 문자를 실수로 제거하는 중
<?php
function removeSpecialCharactersFromString($inputString){
$inputString = str_replace(str_split('#/\\:*?\"<>|[]\'_+(),{}’! &'), "", $inputString);
return $inputString;
}
$test = '赵景然 赵景然';
print(removeSpecialCharactersFromString($test));
?>
이상한 결과는 赵然 赵然
입니다. 문자 景
이 제거되었습니다.
또한 陈 一
도 제거됩니다. 가능한 원인은 무엇일까요?
'str_replace' 멀티 바이트 안전하지 않습니다. 'preg_replace()'를 대신 사용하십시오. – Simba
이 데이터를 인코딩하는 데 UTF8을 사용하고 있다고 생각하지 않습니다. 다중 바이트 안전하지 않은 문자열 함수를 사용하고 있어도 필터 문자열에 지정된 것과 같이 하위 순서가 아닌 단일 바이트 시퀀스에는 사용할 수 없기 때문에 더 긴 UTF8 시퀀스에서 발생합니다. 그러나 데이터가 실제로 UTF16으로 인코딩 된 경우 대부분의 아시아 언어 스크립트에서 가장 효율적이므로이 경우 문자열이 그대로 손상됩니다. – Sammitch