====== PHP RFC: Grapheme Mask ====== * Version: 1.0 * Date: 2026-06-25 * Author: Sepehr, sepehrphpr@gmail.com * Status: Draft * First Published at: http://wiki.php.net/rfc/grapheme_mask * Implementation: TBD * Discussion thread: https://news-web.php.net/php.internals/ ===== Introduction ===== This RFC proposes a new function ''grapheme_mask()'' to the Intl extension. This function allows masking a string with a specific character while being "Unicode-aware" by respecting grapheme cluster boundaries. ===== Proposal ===== Add the following function: function grapheme_mask(string $string, string $mask_char = "*", int $start = 0, ?int $length = null): string|false {} The function will correctly identify individual graphemes (like emojis or combined characters) and replace them with the $mask_char, ensuring the visual integrity of the string is maintained. ===== Examples ===== // Traditional str_repeat/masking might break emojis echo grapheme_mask("سلام 👋", "#"); // Output: ##### (Correctly identifies 5 graphemes) ===== Proposed PHP Version(s) ===== PHP 8.4 or 8.5 (Next minor version). ===== Proposed Changes ===== The implementation will be part of the ''ext/intl'' extension, utilizing the ICU library's break iterator. ===== Vote ===== TBD