diff options
author | Andreas Baumann <mail@andreasbaumann.cc> | 2019-11-17 20:57:39 +0100 |
---|---|---|
committer | Andreas Baumann <mail@andreasbaumann.cc> | 2019-11-17 20:57:39 +0100 |
commit | 3b06ee0d381dc1be5f40ca98ad4278046d869d21 (patch) | |
tree | d31e79fc57d882b8267f40c3434480bb58a3ca73 /include/utf8/mbstring/core.php | |
download | fluxbb-3b06ee0d381dc1be5f40ca98ad4278046d869d21.tar.xz |
Diffstat (limited to 'include/utf8/mbstring/core.php')
-rw-r--r-- | include/utf8/mbstring/core.php | 144 |
1 files changed, 144 insertions, 0 deletions
diff --git a/include/utf8/mbstring/core.php b/include/utf8/mbstring/core.php new file mode 100644 index 0000000..bea1c32 --- /dev/null +++ b/include/utf8/mbstring/core.php @@ -0,0 +1,144 @@ +<?php + +/** +* @version $Id: core.php,v 1.5 2006/02/28 22:12:25 harryf Exp $ +* @package utf8 +* @subpackage strings +*/ + +// Define UTF8_CORE as required +if (!defined('UTF8_CORE')) + define('UTF8_CORE', true); + +/** +* Wrapper round mb_strlen +* Assumes you have mb_internal_encoding to UTF-8 already +* Note: this function does not count bad bytes in the string - these +* are simply ignored +* @param string UTF-8 string +* @return int number of UTF-8 characters in string +* @package utf8 +* @subpackage strings +*/ +function utf8_strlen($str) +{ + return mb_strlen($str); +} + +/** +* Assumes mbstring internal encoding is set to UTF-8 +* Wrapper around mb_strpos +* Find position of first occurrence of a string +* @param string haystack +* @param string needle (you should validate this with utf8_is_valid) +* @param integer offset in characters (from left) +* @return mixed integer position or FALSE on failure +* @package utf8 +* @subpackage strings +*/ +function utf8_strpos($str, $search, $offset = false) +{ + // Strip unvalid characters + $str = utf8_bad_strip($str); + + if ($offset === false) + return mb_strpos($str, $search); + else + return mb_strpos($str, $search, $offset); +} + +/** +* Assumes mbstring internal encoding is set to UTF-8 +* Wrapper around mb_strrpos +* Find position of last occurrence of a char in a string +* @param string haystack +* @param string needle (you should validate this with utf8_is_valid) +* @param integer (optional) offset (from left) +* @return mixed integer position or FALSE on failure +* @package utf8 +* @subpackage strings +*/ +function utf8_strrpos($str, $search, $offset = false) +{ + // Strip unvalid characters + $str = utf8_bad_strip($str); + + if (!$offset) + { + // Emulate behaviour of strrpos rather than raising warning + if (empty($str)) + return false; + + return mb_strrpos($str, $search); + } + else + { + if (!is_int($offset)) + { + trigger_error('utf8_strrpos expects parameter 3 to be long', E_USER_WARNING); + return false; + } + + $str = mb_substr($str, $offset); + + if (($pos = mb_strrpos($str, $search)) !== false) + return $pos + $offset; + + return false; + } +} + +/** +* Assumes mbstring internal encoding is set to UTF-8 +* Wrapper around mb_substr +* Return part of a string given character offset (and optionally length) +* @param string +* @param integer number of UTF-8 characters offset (from left) +* @param integer (optional) length in UTF-8 characters from offset +* @return mixed string or FALSE if failure +* @package utf8 +* @subpackage strings +*/ +function utf8_substr($str, $offset, $length = false) +{ + if ($length === false) + return mb_substr($str, $offset); + else + return mb_substr($str, $offset, $length); +} + +/** +* Assumes mbstring internal encoding is set to UTF-8 +* Wrapper around mb_strtolower +* Make a string lowercase +* Note: The concept of a characters "case" only exists is some alphabets +* such as Latin, Greek, Cyrillic, Armenian and archaic Georgian - it does +* not exist in the Chinese alphabet, for example. See Unicode Standard +* Annex #21: Case Mappings +* @param string +* @return mixed either string in lowercase or FALSE is UTF-8 invalid +* @package utf8 +* @subpackage strings +*/ +function utf8_strtolower($str) +{ + return mb_strtolower($str); +} + +/** +* Assumes mbstring internal encoding is set to UTF-8 +* Wrapper around mb_strtoupper +* Make a string uppercase +* Note: The concept of a characters "case" only exists is some alphabets +* such as Latin, Greek, Cyrillic, Armenian and archaic Georgian - it does +* not exist in the Chinese alphabet, for example. See Unicode Standard +* Annex #21: Case Mappings +* @param string +* @return mixed either string in lowercase or FALSE is UTF-8 invalid +* @package utf8 +* @subpackage strings +*/ +function utf8_strtoupper($str) +{ + return mb_strtoupper($str); +} |