Support Joomla!

Joomla! 1.5 Documentation

Packages

Package: utf8

Developer Network License

The Joomla! Developer Network content is © copyright 2006 by the individual contributors and can be used in accordance with the Creative Commons License, Attribution- NonCommercial- ShareAlike 2.5
Source code for file /phputf8/str_ireplace.php

Documentation is available at str_ireplace.php

  1. <?php
  2. /**
  3. @version $Id: str_ireplace.php,v 1.1 2006/02/25 13:50:17 harryf 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.         $lendif strlen($replace$slen;
  30.         if $slen == {
  31.             return $str;
  32.         }
  33.  
  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 Mon, 05 Mar 2007 21:27:21 +0000 by phpDocumentor 1.3.1