| ab | Yes | 2014-12-26 18:21 |
| aharvey | Yes | 2014-12-30 01:58 |
| ajf | Yes | 2014-12-26 11:32 |
| guilhermeblanco | Yes | 2015-01-08 22:43 |
| indeyets | Yes | 2015-01-05 08:51 |
| irker | Yes | 2015-01-08 12:08 |
| jedibc | Yes | 2014-12-30 13:05 |
| kinncj | Yes | 2015-01-13 14:57 |
| leigh | Yes | 2015-01-02 10:24 |
| mike | Yes | 2014-12-27 23:11 |
| pollita | Yes | 2014-12-26 02:19 |
| rasmus | Yes | 2015-01-04 04:00 |
| salathe | Yes | 2015-01-06 07:45 |
| stas | Yes | 2014-12-26 10:55 |
Copied from wiki.php.net, last synchronized Nov 5, 2026 20:46 UTC
ICU exposes a great deal of i18n/l10n functionality beyond what is currently exposed by PHP. This RFC seeks to expose just a little bit more...
Expose additional ICU functionality from uchar.h as IntlChar::*() following the ICU API as much as possible.
See hphp/runtime/ext/icu/ext_icu_uchar.php in https://reviews.facebook.net/D30573 for a full breakdown of the functions (complete with docblocks). Constants can be found in either PR's *-enum.h files.
PHP 7 (or 5.next if there is one)
Enumerations of UProperty, UCharNameChoice, UPropertyNameChoice, UCharDirection, UBlockCode, etc... For example:
class IntlChar {
const PROPERTY_ALPHABETIC = _UCHAR_ALPHABETIC_;
const PROPERTY_ASCII_HEX_DIGIT = _UCHAR_ASCII_HEX_DIGIT_;
/* etc... */
}
Mapping of ICU API to PHP. For example:
class IntlChar {
static public function hasBinaryProperty(int $codepoint, int $property): bool;
static public function isAlphabetic(int $codepoint): bool;
/* etc... */
}
Note that properties taking a codepoint will accept either an integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as UTF-8 (e.g. “\xE2\x98\x83”). For methods which return a codepoint, they will return int unless they accepted a codepoint as a utf-8 string, in which case they remain utf-8.
I also added IntlChar::chr() and IntlChar::ord() which aren't directly part of the API, but they made sense as wrappers for the U8_*() family of macros.
Some methods take a range in the form ($start, $limit) which the range is INclusive of $start, and EXclusive of $limit. i.e. (0x20, 0x30) => 0x20..0x2F. I kept this meaning for $limit to stay consistent with the ICU API, but changing $limit to have the semantics of $end would probably make more sense in PHP.
Vote: Accept the IntlChar RFC and merge into master? — Yes: 14 · No: 0 (closed)