мы работаем над проектом, в котором мы должны имитировать некоторые выходные данные экспорта старой унаследованной системы.
Эти экспорты основаны на тексте и кодируются в кодировке WINDOWS-1252, где должны кодироваться специальные символыв их десятичном / числовом представлении, например, α
должно быть α
.
Я пытался использовать htmlspecialchars
, htmlentities
и mb_convert_encoding
- к сожалению, безуспешно.
В настоящее время я перебираю каждый символ строки и проверяю, является ли он символом ASCII или нет.Если символ не является допустимым ASCII, я преобразую его в десятичное представление, используя mb_ord
, см. Мою функцию:
private function transformString(string $str)
{
if (mb_check_encoding($str, 'ASCII') === true) {
return $str;
} else {
$characters = preg_split('//u', $str, -1, PREG_SPLIT_NO_EMPTY);
$transformedString = '';
foreach ($characters as $character) {
if (mb_check_encoding($character, 'ASCII') === false) {
$character = sprintf('&#%s;', mb_ord($character));
}
$transformedString .= $character;
}
return $transformedString;
}
}
Это решение, кажется, работает, но мне любопытно, если естьболее чистый путь для этого преобразования?
Заранее спасибо!