rolland Sat Oct 22 01:52:55 2005 EDT
Modified files:
/php-src/ext/standard string.c
Log:
- php_u_stristr: Code comments
http://cvs.php.net/diff.php/php-src/ext/standard/string.c?r1=1.499&r2=1.500&ty=u
Index: php-src/ext/standard/string.c
diff -u php-src/ext/standard/string.c:1.499 php-src/ext/standard/string.c:1.500
--- php-src/ext/standard/string.c:1.499 Thu Oct 20 15:25:52 2005
+++ php-src/ext/standard/string.c Sat Oct 22 01:52:53 2005
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: string.c,v 1.499 2005/10/20 19:25:52 rolland Exp $ */
+/* $Id: string.c,v 1.500 2005/10/22 05:52:53 rolland Exp $ */
/* Synced with php 3.0 revision 1.193 1999-06-16 [ssb] */
@@ -1924,20 +1924,33 @@
/* Have to do this by hand since lower-casing can change lengths
by changing codepoints, and an offset within the lower-case &
- upper-case strings might be different codepoints
+ upper-case strings might be different codepoints.
+
+ Find an occurrence of the first codept of 't' in 's', and
+ starting from this point, match the rest of the codepts of 't'
+ with those in 's'. Comparisons are performed against lower-case
+ equivalents of the codepoints being matched.
+
+ 'i' & 'j' are indices used for extracting codepts 'ch1' &
+ 'ch2'. 'last' is offset in 's' where the search for 't'
+ started, and indicates beginning of 't' in 's' for a successful
+ match.
*/
+
i = 0;
while (i <= (s_len-t_len)) {
last = i;
U16_NEXT(s, i, s_len, ch1);
- U16_GET(t, 0, 0, t_len, ch2);
+ j = 0;
+ U16_NEXT(t, j, t_len, ch2);
if (u_tolower(ch1) == u_tolower(ch2)) {
- j = 0;
- U16_FWD_1(t, j, t_len);
while (j < t_len) {
U16_NEXT(s, i, s_len, ch1);
U16_NEXT(t, j, t_len, ch2);
if (u_tolower(ch1) != u_tolower(ch2)) {
+ /* U16_NEXT() incr 'i' beyond 'ch1',
re-adjust to
+ restart compare
+ */
U16_BACK_1(s, 0, i);
break;
}
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php