[ Index ]

PHP Cross Reference of Joomla 1.5.26 DE

title

Body

[close]

/libraries/phputf8/ -> str_ireplace.php (source)

   1  <?php
   2  /**
   3  * @version $Id: str_ireplace.php 10381 2008-06-01 03:35:53Z pasamio $
   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  }
  79  
  80  


Generated: Wed Mar 28 15:54:07 2012 Cross-referenced by PHPXref 0.7.1