andrei Fri Sep 29 21:00:08 2006 UTC
Modified files:
/php-src/ext/standard string.c
Log:
Heck, might as well commit this..
http://cvs.php.net/viewvc.cgi/php-src/ext/standard/string.c?r1=1.593&r2=1.594&diff_format=u
Index: php-src/ext/standard/string.c
diff -u php-src/ext/standard/string.c:1.593 php-src/ext/standard/string.c:1.594
--- php-src/ext/standard/string.c:1.593 Sat Sep 23 12:22:07 2006
+++ php-src/ext/standard/string.c Fri Sep 29 21:00:07 2006
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: string.c,v 1.593 2006/09/23 12:22:07 tony2001 Exp $ */
+/* $Id: string.c,v 1.594 2006/09/29 21:00:07 andrei Exp $ */
/* Synced with php 3.0 revision 1.193 1999-06-16 [ssb] */
@@ -2156,6 +2156,42 @@
/* {{{ php_u_stristr
Unicode version of case insensitve strstr */
+PHPAPI UChar *php_u_stristr(UChar *str, UChar *pat, int str_len, int pat_len)
+{
+ UChar *str_fold, *pat_fold;
+ int str_fold_len, pat_fold_len;
+ UChar *result, *found;
+ int offset;
+ UErrorCode status = U_ZERO_ERROR;
+
+ zend_case_fold_string(&str_fold, &str_fold_len, str, str_len,
U_FOLD_CASE_DEFAULT, &status);
+ if (str_fold_len == str_len) {
+ zend_case_fold_string(&pat_fold, &pat_fold_len, pat, pat_len,
U_FOLD_CASE_DEFAULT, &status);
+ found = u_strFindFirst(str_fold, str_fold_len, pat_fold,
pat_fold_len);
+ if (found) {
+ result = str + (found - str_fold);
+ } else {
+ result = NULL;
+ }
+ efree(pat_fold);
+ } else {
+ usearch_setText(UG(root_search), str, str_len, &status);
+ usearch_setPattern(UG(root_search), pat, pat_len, &status);
+ usearch_setOffset(UG(root_search), 0, &status);
+
+ offset = usearch_first(UG(root_search), &status);
+ if (offset != USEARCH_DONE) {
+ result = str + offset;
+ } else {
+ result = NULL;
+ }
+ }
+ efree(str_fold);
+
+ return result;
+}
+
+#if 0
PHPAPI UChar *php_u_stristr(UChar *s, UChar *t, int s_len, int t_len)
{
int32_t i,j, last;
@@ -2201,6 +2237,7 @@
}
return NULL;
}
+#endif
/* }}} */
/* {{{ php_stristr
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php