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 | |
| parent | a1d1496cce437afe3ceb2f84fd3baac806ab6659 (diff) | |
| download | itools-88321feeb17e271cbaa582dd2507f3591f65f5f7.tar.gz itools-88321feeb17e271cbaa582dd2507f3591f65f5f7.tar.bz2 itools-88321feeb17e271cbaa582dd2507f3591f65f5f7.zip | |
faster it::replace, tests
| -rw-r--r-- | it.class | 15 | ||||
| -rwxr-xr-x | tests/it.t | 4 | 
2 files changed, 14 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;  } @@ -210,6 +210,10 @@ is(  	"test all=>1,pattern_order=>1"  	); +is(it::replace(array('\w' => "x"), "oö"), "xx"); +is(it::replace(array('\w' => "x", '#' => "!"), "#ö"), "!x"); +is(it::replace(array('#' => "!", '\w' => "x"), "#ö"), "!x"); +is(it::replace(array('ö' => "x"), "Ö"), "x");  # it::filter_keys tests |