<?php
/**
* Placeholder for missing PHP "mbstring" extension.
* Just avoids fatal errors. Does not actually replace functionality.
*
* If the mbstring library is missing any PO files that aren't UTF-8 encoded will result in parsing failures.
*/
abstract class Loco_compat_MbstringExtension {
public static function mb_detect_encoding( $str, array $encoding_list = null, $strict = null ){
return ! $str || preg_match('//u',$str)
? 'UTF-8'
: 'ISO-8859-1'
;
}
public static function mb_list_encodings(){
return ['UTF-8','ISO-8859-1'];
}
public static function mb_strlen( $str, $encoding = null ){
static $warned = false;
if( ! $warned && preg_match('/[\\x80-\\xFF]/',$str) ){
trigger_error('Character counts will be wrong without mbstring extension',E_USER_WARNING);
$warned = true;
}
return strlen($str);
}
public static function mb_convert_encoding( $str, $to_encoding, $from_encoding ){
if( $to_encoding !== $from_encoding && '' !== $str ){
// loco_convert_utf8 no longer uses mb_convert_encoding for UTF8->latin1
if( '' === $from_encoding || 'ISO-8859-1' === $from_encoding || 'cp1252' === $from_encoding ){
if( '' === $to_encoding || 'UTF-8' === $to_encoding || 'US-ASCII' === $to_encoding ){
if( function_exists('loco_fix_utf8') ) {
return loco_fix_utf8( $str );
}
}
}
trigger_error('Unable to convert from '.$from_encoding.' to '.$to_encoding.' without mbstring', E_USER_NOTICE );
}
return $str;
}
public static function mb_strtolower( $str ){
return strtolower($str);
}
}
// @codeCoverageIgnoreStart
if( ! function_exists('mb_detect_encoding') ){
function mb_detect_encoding( $str = '', array $encoding_list = [], $strict = false ){
return Loco_compat_MbstringExtension::mb_detect_encoding( $str, $encoding_list, $strict );
}
}
if( ! function_exists('mb_list_encodings') ){
function mb_list_encodings(){
return Loco_compat_MbstringExtension::mb_list_encodings();
}
}
if( ! function_exists('mb_strlen') ){
function mb_strlen( $str, $encoding = null ){
return Loco_compat_MbstringExtension::mb_strlen( $str, $encoding );
}
}
if( ! function_exists('mb_convert_encoding') ){
function mb_convert_encoding( $str, $to_encoding, $from_encoding = null ){
return Loco_compat_MbstringExtension::mb_convert_encoding( $str, $to_encoding, $from_encoding );
}
}
if( ! function_exists('mb_encoding_aliases') ){
function mb_encoding_aliases(){
return false;
}
}
if( ! function_exists('mb_strtolower') ){
function mb_strtolower( $str ){
return Loco_compat_MbstringExtension::mb_strtolower($str);
}
}