Seditio Source
Root |
./othercms/elxis_5.3_atlas_rev2452/includes/libraries/utf8/mbstring.php
<?php
/**
* @version        $Id: mbstring.php 731 2011-11-10 21:25:23Z datahell $
* @package        Elxis
* @subpackage    Unicode support
* @copyright    Copyright (c) 2006-2012 Elxis CMS (http://www.elxis.org). All rights reserved.
* @license        Elxis Public License ( http://www.elxis.org/elxis-public-license.html )
* @author        Elxis Team ( http://www.elxis.org )
* @description     Elxis CMS is free software. Read the license for copyright notices and details
*/

defined('_ELXIS_') or die ('Direct access to this location is not allowed.');


class
eUTF extends elxisUTF8 {

    static public function
strlen($str) {
        return
mb_strlen($str, 'UTF-8');
    }


    static public function
strpos($str, $search, $offset = 0) {
        if (
$offset === 0) {
            return
mb_strpos($str, $search);
        } else {
            return
mb_strpos($str, $search, $offset, 'UTF-8');
        }
    }


    static public function
strrpos($str, $search, $offset = 0) {
        if (
$offset === 0) {
            if (empty(
$str)) { return false; }
            return
mb_strrpos($str, $search);
        } else {
            if (!
is_int($offset)) {
               
trigger_error('strrpos expects parameter 3 to be long',E_USER_WARNING);
                return
false;
            }
           
$str = mb_substr($str, $offset);
            if (
false !== ($pos = mb_strrpos($str, $search))) {
                return
$pos + $offset;
            }
            return
false;
        }
    }


    static public function
substr($str, $offset, $length = 0) {
        if (
$length === 0) {
            return
mb_substr($str, $offset);
        } else {
            return
mb_substr($str, $offset, $length, 'UTF-8');
        }
    }


    static public function
strtolower($str){
        return
mb_strtolower($str, 'UTF-8');
    }


    static public function
strtoupper($str){
        return
mb_strtoupper($str, 'UTF-8');
    }


    static public function
ltrim($str, $charlist='') {
        if (
trim($charlist) != '') {
            return
ltrim($str, $charlist);
        } else {
            return
preg_replace("#(^\s+)#us", "", $str);
        }
    }


    static public function
rtrim($str, $charlist='') {
        if (
trim($charlist) != '') {
            return
rtrim($str, $charlist);
        } else {
            return
preg_replace("#(\s+$)#us", "", $str);
        }
    }


    static public function
trim($str, $charlist='') {
        if (
trim($charlist) != '') {
            return
trim($str, $charlist);
        } else {
            return
preg_replace("#(^\s+)|(\s+$)#us", "", $str);
        }
    }


    static public function
str_pad($input, $pad_length, $pad_string=' ', $pad_style=STR_PAD_RIGHT) {
        return
str_pad($input, strlen($input)-mb_strlen($input,'UTF-8')+$pad_length, $pad_string, $pad_style);
    }


    static public function
str_split($string, $split_length = 1) {
       
mb_regex_encoding('UTF-8');
       
$split_length = ($split_length <= 0) ? 1 : $split_length;
       
$mb_strlen = mb_strlen($string, 'UTF-8');
       
$array = array();
        for(
$i = 0; $i < $mb_strlen; $i + $split_length) {
           
$array[] = mb_substr($string, $i, $split_length, 'UTF-8');
        }
        return
$array;
    }


    static public function
stristr($haystack, $needle, $part = false) {
        return
mb_stristr($haystack, $needle, $part, 'UTF-8');
    }


    static public function
ucfirst($str) {
        switch (
mb_strlen($str, 'UTF-8')) {
            case
0: return ''; break;
            case
1:
                return
mb_strtoupper($str, 'UTF-8');
            break;
            default:
               
preg_match('/^(.{1})(.*)$/us', $str, $matches);
                return
mb_strtoupper($matches[1], 'UTF-8').$matches[2];
            break;
        }
    }


    static public function
strrev($str) {
       
preg_match_all('/./us', $str, $ar);
        return
join('',array_reverse($ar[0]));
    }


    static public function
substr_replace($str, $repl, $start, $length = NULL) {
       
preg_match_all('/./us', $str, $ar);
       
preg_match_all('/./us', $repl, $rar);
        if (
$length === NULL) { $length = self::strlen($str); }
       
array_splice( $ar[0], $start, $length, $rar[0] );
        return
join('',$ar[0]);
    }


    static public function
str_replace($search, $replace, $subject, $count = NULL) {
        if (
is_array($subject)) {
           
$ret = array();
            foreach(
$subject as $key => $val) {
               
$ret[$key] = self::str_replace($search, $replace, $val);
            }
            return
$ret;
        }
        foreach((array)
$search as $key => $s) {
            if (
$s == '') { continue; }
           
$r = !is_array($replace) ? $replace : (array_key_exists($key, $replace) ? $replace[$key] : '');
           
$pos = mb_strpos($subject, $s);
            while(
$pos !== false) {
               
$subject = mb_substr($subject, 0, $pos) . $r . mb_substr($subject, $pos + mb_strlen($s, 'UTF-8'));
               
$pos = mb_strpos($subject, $s, $pos + mb_strlen($r), 'UTF-8');
            }
        }
        return
$subject;
    }
   
}

?>