You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

shared.mb_str_replace.php 1.7KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. <?php
  2. /**
  3. * Smarty shared plugin
  4. *
  5. * @package Smarty
  6. * @subpackage PluginsShared
  7. */
  8. if (!function_exists('smarty_mb_str_replace')) {
  9. /**
  10. * Multibyte string replace
  11. *
  12. * @param string $search the string to be searched
  13. * @param string $replace the replacement string
  14. * @param string $subject the source string
  15. * @param int &$count number of matches found
  16. *
  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. }
  53. }