utf 8 — PHP str_replace удаляет непреднамеренно удаляя китайские символы

У меня есть PHP-сценарии, которые удаляют специальные символы, но, к сожалению, некоторые китайские символы также удаляются.

<?php

function removeSpecialCharactersFromString($inputString){
$inputString = str_replace(str_split('#/\\:*?\"<>|[]\'_+(),{}’! &'), "", $inputString);
return $inputString;
}

$test = '赵景然 赵景然';
print(removeSpecialCharactersFromString($test));

?>

как ни странно, вывод 赵然 赵然, Характер устранен

к тому же, 陈 一 также удаляется. Что может быть возможной причиной?

0

Решение

Строка, которую вы используете, чтобы действовать как список того, что вы хотите заменить, плохо работает со смешанным кодированием. Что я сделал, так это преобразовал эту строку в 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

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]