andrei Thu May 4 21:22:30 2006 UTC Modified files: /php-src/ext/unicode property.c Log: Implement char_from_name(). http://cvs.php.net/viewcvs.cgi/php-src/ext/unicode/property.c?r1=1.7&r2=1.8&diff_format=u Index: php-src/ext/unicode/property.c diff -u php-src/ext/unicode/property.c:1.7 php-src/ext/unicode/property.c:1.8 --- php-src/ext/unicode/property.c:1.7 Thu May 4 18:37:12 2006 +++ php-src/ext/unicode/property.c Thu May 4 21:22:30 2006 @@ -14,7 +14,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: property.c,v 1.7 2006/05/04 18:37:12 andrei Exp $ */ +/* $Id: property.c,v 1.8 2006/05/04 21:22:30 andrei Exp $ */ #include "php_unicode.h" @@ -369,6 +369,35 @@ 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 CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php