/libraries/vendor/joomla/string/src/phputf8/utf8.php
https://gitlab.com/vitaliylukin91/idea-rating · PHP · 74 lines · 24 code · 7 blank · 43 comment · 8 complexity · cd88682ddce48e6d186288fa82925a8a MD5 · raw file
- <?php
- /**
- * This is the dynamic loader for the library. It checks whether you have
- * the mbstring extension available and includes relevant files
- * on that basis, falling back to the native (as in written in PHP) version
- * if mbstring is unavailabe.
- *
- * It's probably easiest to use this, if you don't want to understand
- * the dependencies involved, in conjunction with PHP versions etc. At
- * the same time, you might get better performance by managing loading
- * yourself. The smartest way to do this, bearing in mind performance,
- * is probably to "load on demand" - i.e. just before you use these
- * functions in your code, load the version you need.
- *
- * It makes sure the the following functions are available;
- * utf8_strlen, utf8_strpos, utf8_strrpos, utf8_substr,
- * utf8_strtolower, utf8_strtoupper
- * Other functions in the ./native directory depend on these
- * six functions being available
- * @package utf8
- */
- /**
- * Put the current directory in this constant
- */
- if ( !defined('UTF8') ) {
- define('UTF8',dirname(__FILE__));
- }
- /**
- * If string overloading is active, it will break many of the
- * native implementations. mbstring.func_overload must be set
- * to 0, 1 or 4 in php.ini (string overloading disabled).
- * Also need to check we have the correct internal mbstring
- * encoding
- */
- if ( extension_loaded('mbstring')) {
- if ( ini_get('mbstring.func_overload') & MB_OVERLOAD_STRING ) {
- trigger_error('String functions are overloaded by mbstring',E_USER_ERROR);
- }
- mb_internal_encoding('UTF-8');
- }
- /**
- * Check whether PCRE has been compiled with UTF-8 support
- */
- $UTF8_ar = array();
- if ( preg_match('/^.{1}$/u',"ñ",$UTF8_ar) != 1 ) {
- trigger_error('PCRE is not compiled with UTF-8 support',E_USER_ERROR);
- }
- unset($UTF8_ar);
- /**
- * Load the smartest implementations of utf8_strpos, utf8_strrpos
- * and utf8_substr
- */
- if ( !defined('UTF8_CORE') ) {
- if ( function_exists('mb_substr') ) {
- require_once UTF8 . '/mbstring/core.php';
- } else {
- require_once UTF8 . '/utils/unicode.php';
- require_once UTF8 . '/native/core.php';
- }
- }
- /**
- * Load the native implementation of utf8_substr_replace
- */
- require_once UTF8 . '/substr_replace.php';
- /**
- * You should now be able to use all the other utf_* string functions
- */