UTF-8 strings handling for PHP Patchwork UTF-8 provides both a portability layer for Unicode handling in PHP, and a class that mirrors the quasi complete set of native string functions, enhanced to UTF-8 grapheme clusters awareness. Patchwork UTF-8 provides pure PHP implementations for mbstring, iconv, and intl. The following set of portability-fallbacks allows an application to run on a server even if those extensions are not enabled: * utf8_encode, utf8_decode, * mbstring: mb_convert_encoding, mb_decode_mimeheader, mb_encode_mimeheader, mb_convert_case, mb_internal_encoding, mb_list_encodings, mb_strlen, mb_strpos, mb_strrpos, mb_strtolower, mb_strtoupper, mb_substitute_character, mb_substr, mb_stripos, mb_stristr, mb_strrchr, mb_strrichr, mb_strripos, mb_strstr, * iconv: iconv, iconv_mime_decode, iconv_mime_decode_headers, iconv_get_encoding, iconv_set_encoding, iconv_mime_encode, ob_iconv_handler, iconv_strlen, iconv_strpos, iconv_strrpos, iconv_substr, * intl: Normalizer, grapheme_extract, grapheme_stripos, grapheme_stristr, grapheme_strlen, grapheme_strpos, grapheme_strripos, grapheme_strrpos, grapheme_strstr, grapheme_substr. The Patchwork\Utf8 class implements the quasi-complete set of native string functions that need UTF-8 grapheme clusters awareness. Function names, arguments and behavior carefully replicates native PHP string functions. Some more functions are also provided to help handling UTF-8 strings * isUtf8(): checks if a string contains well formed UTF-8 data, * toAscii(): generic UTF-8 to ASCII transliteration, * strtocasefold(): unicode transformation for caseless matching, * strtonatfold(): generic case sensitive transformation for collation matching Mirrored string functions are: strlen, substr, strpos, stripos, strrpos, strripos, strstr, stristr, strrchr, strrichr, strtolower, strtoupper, wordwrap, chr, count_chars, ltrim, ord, rtrim, trim, str_ireplace, str_pad, str_shuffle, str_split, str_word_count, strcmp, strnatcmp, strcasecmp, strnatcasecmp, strncasecmp, strncmp, strcspn, strpbrk, strrev, strspn, strtr, substr_compare, substr_count, substr_replace, ucfirst, lcfirst, ucwords, number_format, utf8_encode, utf8_decode.