Source for file str_ireplace.php

Documentation is available at str_ireplace.php

  1. <?php
  2. /**
  3. @version $Id: str_ireplace.php,v 1.1 2007/09/09 20:39:49 pitlinz Exp $
  4. @package utf8
  5. @subpackage strings
  6. */
  7.  
  8. //---------------------------------------------------------------
  9. /**
  10. * UTF-8 aware alternative to str_ireplace
  11. * Case-insensitive version of str_replace
  12. * Note: requires utf8_strtolower
  13. * Note: it's not fast and gets slower if $search / $replace is array
  14. * Notes: it's based on the assumption that the lower and uppercase
  15. * versions of a UTF-8 character will have the same length in bytes
  16. * which is currently true given the hash table to strtolower
  17. @param string 
  18. @return string 
  19. @see http://www.php.net/str_ireplace
  20. @see utf8_strtolower
  21. @package utf8
  22. @subpackage strings
  23. */
  24. function utf8_ireplace($search$replace$str$count NULL){
  25.     
  26.     if !is_array($search) ) {
  27.         
  28.         $slen strlen($search);
  29.         if $slen == {
  30.             return $str;
  31.         }
  32.         
  33.         $lendif strlen($replacestrlen($search);
  34.         $search utf8_strtolower($search);
  35.         
  36.         $search preg_quote($search);
  37.         $lstr utf8_strtolower($str);
  38.         $i 0;
  39.         $matched 0;
  40.         while preg_match('/(.*)'.$search.'/Us',$lstr$matches) ) {
  41.             if $i === $count {
  42.                 break;
  43.             }
  44.             $mlen strlen($matches[0]);
  45.             $lstr substr($lstr$mlen);
  46.             $str substr_replace($str$replace$matched+strlen($matches[1])$slen);
  47.             $matched += $mlen $lendif;
  48.             $i++;
  49.         }
  50.         return $str;
  51.         
  52.     else {
  53.         
  54.         foreach array_keys($searchas $k {
  55.             
  56.             if is_array($replace) ) {
  57.                 
  58.                 if array_key_exists($k,$replace) ) {
  59.                     
  60.                     $str utf8_ireplace($search[$k]$replace[$k]$str$count);
  61.                     
  62.                 else {
  63.                 
  64.                     $str utf8_ireplace($search[$k]''$str$count);
  65.                     
  66.                 }
  67.                 
  68.             else {
  69.             
  70.                 $str utf8_ireplace($search[$k]$replace$str$count);
  71.                 
  72.             }
  73.         }
  74.         return $str;
  75.         
  76.     }
  77.  
  78. }

Documentation generated on Thu, 08 Jan 2009 17:48:36 +0100 by phpDocumentor 1.4.0a2