- if ( NULL === $sep )
- $sep = ini_get('arg_separator.output');
-
- return implode($sep, $ret);
+function _mb_substr( $str, $start, $length = null, $encoding = null ) {
+ // The solution below works only for UTF-8,
+ // so in case of a different charset just use built-in substr()
+ $charset = get_option( 'blog_charset' );
+ if ( ! in_array( $charset, array( 'utf8', 'utf-8', 'UTF8', 'UTF-8' ) ) ) {
+ return is_null( $length ) ? substr( $str, $start ) : substr( $str, $start, $length );
+ }
+ // Use the regex unicode support to separate the UTF-8 characters into an array
+ preg_match_all( '/./us', $str, $match );
+ $chars = is_null( $length ) ? array_slice( $match[0], $start ) : array_slice( $match[0], $start, $length );
+ return implode( '', $chars );