PHP: преобразовать символы в их (десятичное) числовое представление (в строке) - PullRequest
2 голосов
/ 19 сентября 2019

мы работаем над проектом, в котором мы должны имитировать некоторые выходные данные экспорта старой унаследованной системы.

Эти экспорты основаны на тексте и кодируются в кодировке 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;
        }
    }

Это решение, кажется, работает, но мне любопытно, если естьболее чистый путь для этого преобразования?

Заранее спасибо!

...