[feature/patchwork-utf8] Remove utf8_str_replace

This commit is contained in:
Nicolas Grekas 2013-11-20 14:04:06 +01:00
parent 5a7caf6508
commit a2300eb3aa
2 changed files with 4 additions and 51 deletions

View file

@ -1902,50 +1902,3 @@ function utf8_basename($filename)
return $filename; return $filename;
} }
/**
* UTF8-safe str_replace() function
*
* @param string $search The value to search for
* @param string $replace The replacement string
* @param string $subject The target string
* @return string The resultant string
*/
function utf8_str_replace($search, $replace, $subject)
{
if (!is_array($search))
{
$search = array($search);
if (is_array($replace))
{
$replace = (string) $replace;
trigger_error('Array to string conversion', E_USER_NOTICE);
}
}
$length = sizeof($search);
if (!is_array($replace))
{
$replace = array_fill(0, $length, $replace);
}
else
{
$replace = array_pad($replace, $length, '');
}
for ($i = 0; $i < $length; $i++)
{
$search_length = utf8_strlen($search[$i]);
$replace_length = utf8_strlen($replace[$i]);
$offset = 0;
while (($start = utf8_strpos($subject, $search[$i], $offset)) !== false)
{
$subject = utf8_substr($subject, 0, $start) . $replace[$i] . utf8_substr($subject, $start + $search_length);
$offset = $start + $replace_length;
}
}
return $subject;
}

View file

@ -363,8 +363,8 @@ abstract class driver implements driver_interface
*/ */
function sql_like_expression($expression) function sql_like_expression($expression)
{ {
$expression = utf8_str_replace(array('_', '%'), array("\_", "\%"), $expression); $expression = str_replace(array('_', '%'), array("\_", "\%"), $expression);
$expression = utf8_str_replace(array(chr(0) . "\_", chr(0) . "\%"), array('_', '%'), $expression); $expression = str_replace(array(chr(0) . "\_", chr(0) . "\%"), array('_', '%'), $expression);
return $this->_sql_like_expression('LIKE \'' . $this->sql_escape($expression) . '\''); return $this->_sql_like_expression('LIKE \'' . $this->sql_escape($expression) . '\'');
} }
@ -374,8 +374,8 @@ abstract class driver implements driver_interface
*/ */
function sql_not_like_expression($expression) function sql_not_like_expression($expression)
{ {
$expression = utf8_str_replace(array('_', '%'), array("\_", "\%"), $expression); $expression = str_replace(array('_', '%'), array("\_", "\%"), $expression);
$expression = utf8_str_replace(array(chr(0) . "\_", chr(0) . "\%"), array('_', '%'), $expression); $expression = str_replace(array(chr(0) . "\_", chr(0) . "\%"), array('_', '%'), $expression);
return $this->_sql_not_like_expression('NOT LIKE \'' . $this->sql_escape($expression) . '\''); return $this->_sql_not_like_expression('NOT LIKE \'' . $this->sql_escape($expression) . '\'');
} }