mirror of
https://github.com/php/php-src.git
synced 2025-08-18 15:08:55 +02:00
Implement char_from_name().
This commit is contained in:
parent
534cad7064
commit
49dbb7710a
1 changed files with 29 additions and 0 deletions
|
@ -369,6 +369,35 @@ PHP_FUNCTION(char_from_digit)
|
||||||
|
|
||||||
PHP_FUNCTION(char_from_name)
|
PHP_FUNCTION(char_from_name)
|
||||||
{
|
{
|
||||||
|
UChar *name;
|
||||||
|
int name_len;
|
||||||
|
UChar32 ch;
|
||||||
|
UCharNameChoice choice = U_UNICODE_CHAR_NAME;
|
||||||
|
zend_bool extended = FALSE;
|
||||||
|
char *buf;
|
||||||
|
UErrorCode status = U_ZERO_ERROR;
|
||||||
|
|
||||||
|
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "u|b", &name, &name_len, &extended) == FAILURE) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (extended) {
|
||||||
|
choice = U_EXTENDED_CHAR_NAME;
|
||||||
|
}
|
||||||
|
|
||||||
|
buf = zend_unicode_to_ascii(name, name_len TSRMLS_CC);
|
||||||
|
if (buf) {
|
||||||
|
ch = u_charFromName(choice, buf, &status);
|
||||||
|
if (U_SUCCESS(status)) {
|
||||||
|
RETVAL_UCHAR32(ch);
|
||||||
|
} else {
|
||||||
|
RETVAL_FALSE;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
php_error(E_WARNING, "Character name has to consist only of ASCII characters");
|
||||||
|
RETURN_FALSE;
|
||||||
|
}
|
||||||
|
efree(buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
PHP_FUNCTION(char_get_name)
|
PHP_FUNCTION(char_get_name)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue