У меня есть PHP-сценарии, которые удаляют специальные символы, но, к сожалению, некоторые китайские символы также удаляются.
<?php
function removeSpecialCharactersFromString($inputString){
$inputString = str_replace(str_split('#/\\:*?\"<>|[]\'_+(),{}’! &'), "", $inputString);
return $inputString;
}
$test = '赵景然 赵景然';
print(removeSpecialCharactersFromString($test));
?>
как ни странно, вывод 赵然 赵然
, Характер 景
устранен
к тому же, 陈 一
также удаляется. Что может быть возможной причиной?
Строка, которую вы используете, чтобы действовать как список того, что вы хотите заменить, плохо работает со смешанным кодированием. Что я сделал, так это преобразовал эту строку в UTF16, а затем разделил ее.
function removeSpecialCharactersFromString($inputString){
$inputString = str_replace(str_split(
mb_convert_encoding('#/\\:*?\"<>|[]\'_+(),{}’! &', 'UTF16')), "", $inputString);
return $inputString;
}
$test = '#赵景然 赵景然';
print(removeSpecialCharactersFromString($test));
Который дает…
赵景然赵景然
Кстати —str_replace
MB безопасен — своего рода узнаваемый плакат … http://php.net/manual/en/ref.mbstring.php#109937
Других решений пока нет …