Долгое время возился с фрагментами этого кода, фактически с тех пор, как впервые действительно освоился с Dokuwiki , но, наконец, выпустил первый релиз .
PHP UTF-8 предназначен для того, чтобы можно было обрабатывать строки в кодировке UTF-8 в PHP, не требуя расширения mbstring (хотя он использует mbstring, если он доступен). Короче говоря, он предоставляет версии строковых функций PHP (почти все, что вы найдете в этом списке ), с префиксом utf_
Это также дает вам некоторые инструменты, которые помогут проверить строки UTF-8 на «правильность», обрезать плохие последовательности и некоторые «помощники ASCII».
Части кода каннибализируются из других источников — благодаря Энди Гору ( Dokuwiki UTF-8 ) и Анри Сивонену за его преобразование UTF-8 в Code Point Array (которое было перенесено в PHP из кодовой базы Mozilla).
Вы должны простить небольшую гордость, но, исходя из начальных тестов наиболее важных нативных (не mbstring) функций, производительность почти так же хороша, как и функции mbstring — в допустимом диапазоне. Ключ был этот вдохновенный совет . В противном случае он сгибает этот / u PCRE_UTF8 модификатор шаблона для хорошего использования.
Во всяком случае — документация тонкая на месте, кроме встроенного в исходный код — необходимо в конечном итоге сделать учебник. Для начала «с нуля» лучше всего использовать кодовые страницы и страницы PHP utf-8 вики WACT .
Большое предупреждение, если вы планируете использовать это — не «вслепую» заменяйте все использование строковых функций PHP на функции из этой библиотеки — большинство функций обеспечивает то, что вам понадобится только изредка, если вообще и хотя производительность «приемлема» », Это не так быстро, как настоящая вещь. Две ключевые вещи, которые вы должны иметь в виду, это то, что ASCII-7 (US-ASCII) является подмножеством UTF-8 и что каждая действительная последовательность UTF-8 уникальна (ее нельзя принять за подпоследовательность другой, более длинной последовательности). ). Стоит долго смотреть на таблицу на этой странице .
В любом случае — надеюсь, это поможет сделать независимые mbstring PHP-приложения почти возможными . Если этого не произойдет, PHP6 может появиться к концу года.