Changeset 1909

Show
Ignore:
Timestamp:
02/04/2008 04:41:55 AM (11 months ago)
Author:
Geert
Message:

utf8::trim() updates:

  • Drop support for .. character ranges. Why? It's slow. It's ugly. Nobody uses it. Nobody should use it. This 'feature' isn't even implemented in the original phputf8 package.
  • Fixed bug in utf8::rtrim() concerning ending newlines. Applied D modifier.
  • Optimized utf8::rtrim() by making character class possessive. You know the drill: kill backtracking.
Location:
trunk/system/core/utf8
Files:
4 modified

Legend:

Unmodified
Added
Removed
  • trunk/system/core/utf8/ltrim.php

    r1382 r1909  
    1111function _ltrim($str, $charlist = NULL) 
    1212{ 
    13         if ($charlist === NULL OR utf8::is_ascii($charlist)) 
    14         { 
    15                 return ($charlist === NULL) ? ltrim($str) : ltrim($str, $charlist); 
    16         } 
     13        if ($charlist === NULL) 
     14                return ltrim($str); 
    1715 
    18         $charlist = preg_replace('#[-[\].:\\\\^/]#', '\\\\$0', $charlist); 
     16        if (utf8::is_ascii($charlist)) 
     17                return ltrim($str, $charlist); 
    1918 
    20         // Try to support .. character ranges. If they cause errors, drop support. 
    21         $charlist_ranged = str_replace('\.\.', '-', $charlist); 
    22         $str_ranged = @preg_replace('/^['.$charlist_ranged.']+/u', '', $str); 
     19        $charlist = preg_replace('#[-\[\]:\\\\^/]#', '\\\\$0', $charlist); 
    2320 
    24         return ($str_ranged !== NULL) ? $str_ranged : preg_replace('/^['.$charlist.']+/u', '', $str); 
     21        return preg_replace('/^['.$charlist.']+/u', '', $str); 
    2522} 
  • trunk/system/core/utf8/rtrim.php

    r1382 r1909  
    1111function _rtrim($str, $charlist = NULL) 
    1212{ 
    13         if ($charlist === NULL OR utf8::is_ascii($charlist)) 
    14         { 
    15                 return ($charlist === NULL) ? rtrim($str) : rtrim($str, $charlist); 
    16         } 
     13        if ($charlist === NULL) 
     14                return rtrim($str); 
    1715 
    18         $charlist = preg_replace('#[-[\].:\\\\^/]#', '\\\\$0', $charlist); 
     16        if (utf8::is_ascii($charlist)) 
     17                return rtrim($str, $charlist); 
    1918 
    20         // Try to support .. character ranges. If they cause errors, drop support. 
    21         $charlist_ranged = str_replace('\.\.', '-', $charlist); 
    22         $str_ranged = @preg_replace('/['.$charlist_ranged.']+$/u', '', $str); 
     19        $charlist = preg_replace('#[-\[\]:\\\\^/]#', '\\\\$0', $charlist); 
    2320 
    24         return ($str_ranged !== NULL) ? $str_ranged : preg_replace('/['.$charlist.']+$/u', '', $str); 
     21        return preg_replace('/['.$charlist.']++$/uD', '', $str); 
    2522} 
  • trunk/system/core/utf8/strrev.php

    r1382 r1909  
    1212{ 
    1313        if (utf8::is_ascii($str)) 
    14         { 
    1514                return strrev($str); 
    16         } 
    1715 
    1816        preg_match_all('/./us', $str, $matches); 
  • trunk/system/core/utf8/trim.php

    r1382 r1909  
    1111function _trim($str, $charlist = NULL) 
    1212{ 
    13         if ($charlist === NULL OR utf8::is_ascii($charlist)) 
    14         { 
    15                 return ($charlist === NULL) ? trim($str) : trim($str, $charlist); 
    16         } 
     13        if ($charlist === NULL) 
     14                return trim($str); 
    1715 
    1816        return utf8::ltrim(utf8::rtrim($str, $charlist), $charlist);