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