diff options
author | Urban Müller | 2011-11-14 18:52:12 +0000 |
---|---|---|
committer | Urban Müller | 2011-11-14 18:52:12 +0000 |
commit | 88321feeb17e271cbaa582dd2507f3591f65f5f7 (patch) | |
tree | 644948c7f10273fd0e708e327b36fba9566c2f4b /it.class | |
parent | a1d1496cce437afe3ceb2f84fd3baac806ab6659 (diff) | |
download | itools-88321feeb17e271cbaa582dd2507f3591f65f5f7.tar.gz itools-88321feeb17e271cbaa582dd2507f3591f65f5f7.tar.bz2 itools-88321feeb17e271cbaa582dd2507f3591f65f5f7.zip |
faster it::replace, tests
Diffstat (limited to 'it.class')
-rw-r--r-- | it.class | 15 |
1 files changed, 10 insertions, 5 deletions
@@ -397,12 +397,17 @@ static function replace($replacements, $string, $p = array()) $patterns = array(); foreach (array_keys($replacements) as $pattern) - $patterns[] = it::convertregex($pattern, $p); + $patterns[] = !preg_match('/\\\\[wb]|[!\x80-\xff]|\[\[:/i', $pattern) && !$p ? "!$pattern!i" : it::convertregex($complex = $pattern, $p); - $oldlocale = setlocale(LC_CTYPE, 0); - setlocale(LC_CTYPE, 'de_CH'); - $result = preg_replace($patterns, array_values($replacements), $string, isset($p['limit']) ? $p['limit'] : -1); - setlocale(LC_CTYPE, $oldlocale); + if (!$complex) + $result = preg_replace($patterns, array_values($replacements), $string); + else + { + $oldlocale = setlocale(LC_CTYPE, 0); + setlocale(LC_CTYPE, 'de_CH'); + $result = preg_replace($patterns, array_values($replacements), $string, isset($p['limit']) ? $p['limit'] : -1); + setlocale(LC_CTYPE, $oldlocale); + } return $result; } |