====== PHP RFC: Add locale for case insensitive grapheme functions ====== * Version: 0.9 * Date: 2025-06-07 * Author: Yuya Hamada, youkidearitai@gmail.com * Status: Under Discussion * First Published at: https://wiki.php.net/rfc/grapheme_add_locale_for_case_insensitive ===== Introduction ===== A grapheme functions is not locale dependency. This RFC is add locale parameter for grapheme case insensitive functions. That is more enhancements for Unicode can be expected. * grapheme_stripos * grapheme_strripos * grapheme_stristr * grapheme_levenshtein By this RFC can cover locale. For example. var_dump(grapheme_stripos("i", "\u{0130}", 0, "tr_TR")); // Result is 0 var_dump(grapheme_stripos("i", "\u{0130}", 0, "en_US")); // Result is false ===== Proposal ===== Add a $locale parameter in these functions. function grapheme_stripos(string $haystack, string $needle, int $offset = 0, ?string $locale = null): int|false function grapheme_strripos(string $haystack, string $needle, int $offset = 0, ?string $locale = null): int|false function grapheme_stristr(string $haystack, string $needle, bool $beforeNeedle = false, ?string $locale = null): string|false function grapheme_levenshtein(string $string1, string $string2, int $insertion_cost = 1, int $replacement_cost = 1, int $deletion_cost = 1, ?string $locale = null): int|false ===== Backward Incompatible Changes ===== Maybe nothing. ===== Proposed PHP Version(s) ===== 8.5 ===== RFC Impact ===== ==== To SAPIs ==== No effects. ==== To Existing Extensions ==== No effects. ==== To Opcache ==== No effects. ==== New Constants ==== No effects. ===== Open Issues ===== Nothing. ===== Future Scope ===== This section details areas where the feature might be improved in future, but that are not currently proposed in this RFC. ===== Proposed Voting Choices ===== Include these so readers know where you are heading and can discuss the proposed voting options. ===== Patches and Tests ===== https://github.com/php/php-src/pull/18792 ===== Implementation ===== https://github.com/php/php-src/pull/18792 ===== References ===== https://unicode-org.github.io/icu/userguide/transforms/casemappings.html#full-language-specific-case-mapping ===== Rejected Features ===== Keep this updated with features that were discussed on the mail lists.