From 86bc31ea2b76d53d2f04bab4f825b0b07354eaa2 Mon Sep 17 00:00:00 2001 From: markjaquith Date: Thu, 7 Apr 2011 15:46:57 +0000 Subject: [PATCH] Add mb_substr() back to compat.php (it is non-default). see #16918. props joostdevalk git-svn-id: http://svn.automattic.com/wordpress/trunk@17621 1a063a9b-81f0-0310-95a4-ce76da25c4cd --- wp-includes/compat.php | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/wp-includes/compat.php b/wp-includes/compat.php index 3531017e5..e1e0fa532 100644 --- a/wp-includes/compat.php +++ b/wp-includes/compat.php @@ -12,3 +12,22 @@ if ( !function_exists('_') ) { return $string; } } + +if ( !function_exists('mb_substr') ): + function mb_substr( $str, $start, $length=null, $encoding=null ) { + return _mb_substr($str, $start, $length, $encoding); + } +endif; + +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 ); +}