]> granicus.if.org Git - php/commitdiff
Added string comparison function strcoll(). It uses the current locale to
authorSean Bright <elixer@php.net>
Wed, 17 Jan 2001 01:10:50 +0000 (01:10 +0000)
committerSean Bright <elixer@php.net>
Wed, 17 Jan 2001 01:10:50 +0000 (01:10 +0000)
do the comparisons.
@- Added localeconv() and strcoll() functions for localization. (Sean)

ext/standard/basic_functions.c
ext/standard/php_string.h
ext/standard/string.c

index 4c71abf18e0b8312c96744ffd1a248ba18b18a22..4293d7873027066eab0a224e00f8fc217b320e1a 100644 (file)
@@ -162,6 +162,11 @@ function_entry basic_functions[] = {
        PHP_FE(strstr,                                                                  NULL)
        PHP_FE(stristr,                                                                 NULL)
        PHP_FE(strrchr,                                                                 NULL)
+#ifdef HAVE_STRCOLL
+       PHP_FE(strcoll,                                                                 NULL)
+#else
+       PHP_FALIAS(strcoll, warn_not_available,                 NULL)
+#endif
        PHP_FE(substr,                                                                  NULL)
        PHP_FE(substr_replace,                                                  NULL)
        PHP_FE(quotemeta,                                                               NULL)
index 7a2c5ecfb0bb925f0a4a532ce4bbe7b000fb9af9..c59f716e57361b07f18a77a403a064bcdd07a3ef 100644 (file)
@@ -79,9 +79,12 @@ PHP_FUNCTION(strnatcasecmp);
 PHP_FUNCTION(substr_count);
 PHP_FUNCTION(str_pad);
 PHP_FUNCTION(sscanf);
+#ifdef HAVE_STRCOLL
+PHP_FUNCTION(strcoll);
+#endif
 
 
-#if defined(HAVE_LOCALECONV) && defined(ZTS)
+#ifdef ZTS
 PHP_MINIT_FUNCTION(localeconv);
 PHP_MSHUTDOWN_FUNCTION(localeconv);
 #endif
index 98e0c3a73bd93cc2e57ab783c54cde4b422f0659..15311417c5a666cfa427149bdbd98086798bd74c 100644 (file)
@@ -210,6 +210,24 @@ PHP_FUNCTION(strcspn)
 }
 /* }}} */
 
+#ifdef HAVE_STRCOLL
+/* {{{ proto int strcoll(string str1, string str2)
+   Compare two strings using the current locale */
+PHP_FUNCTION(strcoll)
+{
+       zval **s1, **s2;
+
+       if (ZEND_NUM_ARGS()!=2 || zend_get_parameters_ex(2, &s1, &s2) == FAILURE) {
+               WRONG_PARAM_COUNT;
+       }
+
+       convert_to_string_ex(s1);
+       convert_to_string_ex(s2);
+
+       RETURN_LONG(strcoll((const char *)(*s1)->value.str.val, (const char *)(*s2)->value.str.val));
+}
+#endif
+
 PHPAPI void php_trim(zval *str, zval * return_value, int mode)
 /* mode 1 : trim left
    mode 2 : trim right