1 <?php
2 /**
3 * Smarty shared plugin
4 *
5 * @package Smarty
6 * @subpackage PluginsShared
7 */
8 if (!function_exists('smarty_mb_str_replace')) {
10 /**
11 * Multibyte string replace
12 *
13 * @param string $search the string to be searched
14 * @param string $replace the replacement string
15 * @param string $subject the source string
16 * @param int &$count number of matches found
17 * @return string replaced string
18 * @author Rodney Rehm
19 */
20 function smarty_mb_str_replace($search, $replace, $subject, &$count=0)
21 {
22 if (!is_array($search) && is_array($replace)) {
23 return false;
24 }
25 if (is_array($subject)) {
26 // call mb_replace for each single string in $subject
27 foreach ($subject as &$string) {
28 $string = &smarty_mb_str_replace($search, $replace, $string, $c);
29 $count += $c;
30 }
31 } elseif (is_array($search)) {
32 if (!is_array($replace)) {
33 foreach ($search as &$string) {
34 $subject = smarty_mb_str_replace($string, $replace, $subject, $c);
35 $count += $c;
36 }
37 } else {
38 $n = max(count($search), count($replace));
39 while ($n--) {
40 $subject = smarty_mb_str_replace(current($search), current($replace), $subject, $c);
41 $count += $c;
42 next($search);
43 next($replace);
44 }
45 }
46 } else {
47 $parts = mb_split(preg_quote($search), $subject);
48 $count = count($parts) - 1;
49 $subject = implode($replace, $parts);
50 }
51 return $subject;
52 }
54 }
55 ?>