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 == 0 ) {
  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($search) as $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