Соответствует всем символам Юникода, которые также присутствуют в таблице windows-1251 - PullRequest
0 голосов
/ 21 февраля 2019

Есть ли способ сопоставить все символы UTF-8, у которых есть аналоги из windows-1251, без сопоставления номера каждого из них вручную?Есть определенные диапазоны, но слишком много символов вне диапазона.Я хотел бы сэкономить время, если это возможно.

1 Ответ

0 голосов
/ 21 февраля 2019

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

preg_replace_callback(
    '#[^.]#u', function($matches) {
        if ( null == (iconv("utf-8", "windows-1251//IGNORE", $matches[0])) ) {
            return 'replace_pattern';
        }
        else return $matches[0];
    },
    $text
);

По сути, с помощью iconv я проверяю, можно ли преобразовать символ юникода в windows-1251и если это возможно, то я возвращаю тот же символ, но если не могу (//IGNORE возвращает null в таких случаях), я возвращаю свой шаблон замены.Я почти уверен, что это пригодится тому, кто находится в подобной ситуации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...