浏览代码

Rewrote next_pos_minus_white() to fix correctness and efficiency
problems. Rewrote comment for the function.

antipode 23 年之前
父节点
当前提交
c4e8279a4a
共有 1 个文件被更改,包括 11 次插入10 次删除
  1. 11 10
      functions/strings.php

+ 11 - 10
functions/strings.php

@@ -66,18 +66,19 @@ function readMailboxParent($haystack, $needle) {
 }
 
 /**
- * Searches for the next position in a string minus white space.
+ * Returns the index of the first chunk of string $haystack that
+ * starts with non-white-space character, starting at position $pos.
+ * If there is no such chunk, returns -1.
  */
 function next_pos_minus_white ($haystack, $pos) {
-    while (substr($haystack, $pos, 1) == ' ' ||
-           substr($haystack, $pos, 1) == "\t" ||
-           substr($haystack, $pos, 1) == "\n" ||
-           substr($haystack, $pos, 1) == "\r") {
-        if ($pos >= strlen($haystack))
-            return -1;
-        $pos++;
-    }
-    return $pos;
+    $len = strlen($haystack);
+    for ( ; $pos < $len; $pos++ ) {
+        $char = substr($haystack, $pos, 1);
+        if ( $char != ' ' && $char != "\t" && $char != "\n" && $char != "\r" ) {
+            return $pos;
+        }
+    }
+    return -1;
 }
 
 /**