1ed7b5f09Sandi<?php 2*d4f83172SAndreas Gohr 382257610Sandi/** 482257610Sandi * UTF8 helper functions 582257610Sandi * 60da4ba1bSAndreas Gohr * This file now only intitializes the UTF-8 capability detection and defines helper 70da4ba1bSAndreas Gohr * functions if needed. All actual code is in the \dokuwiki\Utf8 classes 80da4ba1bSAndreas Gohr * 982257610Sandi * @author Andreas Gohr <andi@splitbrain.org> 1082257610Sandi */ 1182257610Sandi 120da4ba1bSAndreas Gohruse dokuwiki\Utf8\Clean; 130da4ba1bSAndreas Gohruse dokuwiki\Utf8\Conversion; 140da4ba1bSAndreas Gohruse dokuwiki\Utf8\PhpString; 150da4ba1bSAndreas Gohruse dokuwiki\Utf8\Unicode; 160da4ba1bSAndreas Gohr 17ab77016bSAndreas Gohr/** 18ab77016bSAndreas Gohr * check for mb_string support 19ab77016bSAndreas Gohr */ 20ab77016bSAndreas Gohrif (!defined('UTF8_MBSTRING')) { 21ab77016bSAndreas Gohr if (function_exists('mb_substr') && !defined('UTF8_NOMBSTRING')) { 22ab77016bSAndreas Gohr define('UTF8_MBSTRING', 1); 23ab77016bSAndreas Gohr } else { 24ab77016bSAndreas Gohr define('UTF8_MBSTRING', 0); 25ab77016bSAndreas Gohr } 26ab77016bSAndreas Gohr} 27ab77016bSAndreas Gohr 283161005dSAndreas Gohr/** 293161005dSAndreas Gohr * Check if PREG was compiled with UTF-8 support 303161005dSAndreas Gohr * 313161005dSAndreas Gohr * Without this many of the functions below will not work, so this is a minimal requirement 323161005dSAndreas Gohr */ 333161005dSAndreas Gohrif (!defined('UTF8_PREGSUPPORT')) { 343161005dSAndreas Gohr define('UTF8_PREGSUPPORT', (bool)@preg_match('/^.$/u', 'ñ')); 353161005dSAndreas Gohr} 363161005dSAndreas Gohr 373161005dSAndreas Gohr/** 383161005dSAndreas Gohr * Check if PREG was compiled with Unicode Property support 393161005dSAndreas Gohr * 403161005dSAndreas Gohr * This is not required for the functions below, but might be needed in a UTF-8 aware application 413161005dSAndreas Gohr */ 423161005dSAndreas Gohrif (!defined('UTF8_PROPERTYSUPPORT')) { 433161005dSAndreas Gohr define('UTF8_PROPERTYSUPPORT', (bool)@preg_match('/^\pL$/u', 'ñ')); 443161005dSAndreas Gohr} 453161005dSAndreas Gohr 463161005dSAndreas Gohr 47f41bbe4cSAndreas Gohrif (UTF8_MBSTRING) { 48f41bbe4cSAndreas Gohr mb_internal_encoding('UTF-8'); 49f41bbe4cSAndreas Gohr} 50f41bbe4cSAndreas Gohr 515e613a5cSchris 52df957b36SAndreas Gohrif (!function_exists('utf8_isASCII')) { 530a8df03fSAndreas Gohr /** @deprecated 2019-06-09 */ 54f41bbe4cSAndreas Gohr function utf8_isASCII($str) 55f41bbe4cSAndreas Gohr { 560a8df03fSAndreas Gohr dbg_deprecated(Clean::class . '::isASCII()'); 570da4ba1bSAndreas Gohr return Clean::isASCII($str); 5844f669e9Sandi } 59df957b36SAndreas Gohr} 6044f669e9Sandi 61f41bbe4cSAndreas Gohr 62df957b36SAndreas Gohrif (!function_exists('utf8_strip')) { 630a8df03fSAndreas Gohr /** @deprecated 2019-06-09 */ 64f41bbe4cSAndreas Gohr function utf8_strip($str) 65f41bbe4cSAndreas Gohr { 660a8df03fSAndreas Gohr dbg_deprecated(Clean::class . '::strip()'); 670da4ba1bSAndreas Gohr return Clean::strip($str); 68e1906e6eSandi } 69df957b36SAndreas Gohr} 70e1906e6eSandi 71df957b36SAndreas Gohrif (!function_exists('utf8_check')) { 720a8df03fSAndreas Gohr /** @deprecated 2019-06-09 */ 73f41bbe4cSAndreas Gohr function utf8_check($str) 74f41bbe4cSAndreas Gohr { 750a8df03fSAndreas Gohr dbg_deprecated(Clean::class . '::isUtf8()'); 760da4ba1bSAndreas Gohr return Clean::isUtf8($str); 77f29bd553Sandi } 78df957b36SAndreas Gohr} 7949c713a3Sandi 80f393a4ebSAndreas Gohrif (!function_exists('utf8_basename')) { 810a8df03fSAndreas Gohr /** @deprecated 2019-06-09 */ 82f41bbe4cSAndreas Gohr function utf8_basename($path, $suffix = '') 83f41bbe4cSAndreas Gohr { 840a8df03fSAndreas Gohr dbg_deprecated(PhpString::class . '::basename()'); 850da4ba1bSAndreas Gohr return PhpString::basename($path, $suffix); 86f393a4ebSAndreas Gohr } 87f393a4ebSAndreas Gohr} 88f393a4ebSAndreas Gohr 89df957b36SAndreas Gohrif (!function_exists('utf8_strlen')) { 900a8df03fSAndreas Gohr /** @deprecated 2019-06-09 */ 91f41bbe4cSAndreas Gohr function utf8_strlen($str) 92f41bbe4cSAndreas Gohr { 930a8df03fSAndreas Gohr dbg_deprecated(PhpString::class . '::strlen()'); 940da4ba1bSAndreas Gohr return PhpString::strlen($str); 952f954959Sandi } 96df957b36SAndreas Gohr} 972f954959Sandi 98df957b36SAndreas Gohrif (!function_exists('utf8_substr')) { 990a8df03fSAndreas Gohr /** @deprecated 2019-06-09 */ 100f41bbe4cSAndreas Gohr function utf8_substr($str, $offset, $length = null) 101f41bbe4cSAndreas Gohr { 1020a8df03fSAndreas Gohr dbg_deprecated(PhpString::class . '::substr()'); 1030da4ba1bSAndreas Gohr return PhpString::substr($str, $offset, $length); 1042626ee0cSchris } 105df957b36SAndreas Gohr} 10610f09f2aSAndreas Gohr 107df957b36SAndreas Gohrif (!function_exists('utf8_substr_replace')) { 1080a8df03fSAndreas Gohr /** @deprecated 2019-06-09 */ 109f41bbe4cSAndreas Gohr function utf8_substr_replace($string, $replacement, $start, $length = 0) 110f41bbe4cSAndreas Gohr { 1110a8df03fSAndreas Gohr dbg_deprecated(PhpString::class . '::substr_replace()'); 1120da4ba1bSAndreas Gohr return PhpString::substr_replace($string, $replacement, $start, $length); 113dc57ef04Sandi } 114df957b36SAndreas Gohr} 115dc57ef04Sandi 116df957b36SAndreas Gohrif (!function_exists('utf8_ltrim')) { 1170a8df03fSAndreas Gohr /** @deprecated 2019-06-09 */ 118f41bbe4cSAndreas Gohr function utf8_ltrim($str, $charlist = '') 119f41bbe4cSAndreas Gohr { 1200a8df03fSAndreas Gohr dbg_deprecated(PhpString::class . '::ltrim()'); 1210da4ba1bSAndreas Gohr return PhpString::ltrim($str, $charlist); 122f29317c1Sandi } 123df957b36SAndreas Gohr} 124f29317c1Sandi 125df957b36SAndreas Gohrif (!function_exists('utf8_rtrim')) { 1260a8df03fSAndreas Gohr /** @deprecated 2019-06-09 */ 127f41bbe4cSAndreas Gohr function utf8_rtrim($str, $charlist = '') 128f41bbe4cSAndreas Gohr { 1290a8df03fSAndreas Gohr dbg_deprecated(PhpString::class . '::rtrim()'); 1300da4ba1bSAndreas Gohr return PhpString::rtrim($str, $charlist); 131f29317c1Sandi } 132df957b36SAndreas Gohr} 133f29317c1Sandi 134df957b36SAndreas Gohrif (!function_exists('utf8_trim')) { 1350a8df03fSAndreas Gohr /** @deprecated 2019-06-09 */ 136f41bbe4cSAndreas Gohr function utf8_trim($str, $charlist = '') 137f41bbe4cSAndreas Gohr { 1380a8df03fSAndreas Gohr dbg_deprecated(PhpString::class . '::trim()'); 1390da4ba1bSAndreas Gohr return PhpString::trim($str, $charlist); 140f29317c1Sandi } 141df957b36SAndreas Gohr} 142f29317c1Sandi 143df957b36SAndreas Gohrif (!function_exists('utf8_strtolower')) { 1440a8df03fSAndreas Gohr /** @deprecated 2019-06-09 */ 145f41bbe4cSAndreas Gohr function utf8_strtolower($str) 146f41bbe4cSAndreas Gohr { 1470a8df03fSAndreas Gohr dbg_deprecated(PhpString::class . '::strtolower()'); 1480da4ba1bSAndreas Gohr return PhpString::strtolower($str); 14982257610Sandi } 150df957b36SAndreas Gohr} 15182257610Sandi 152df957b36SAndreas Gohrif (!function_exists('utf8_strtoupper')) { 1530a8df03fSAndreas Gohr /** @deprecated 2019-06-09 */ 154f41bbe4cSAndreas Gohr function utf8_strtoupper($str) 155f41bbe4cSAndreas Gohr { 1560a8df03fSAndreas Gohr dbg_deprecated(PhpString::class . '::strtoupper()'); 1570da4ba1bSAndreas Gohr return PhpString::strtoupper($str); 15882257610Sandi } 159df957b36SAndreas Gohr} 16082257610Sandi 161df957b36SAndreas Gohrif (!function_exists('utf8_ucfirst')) { 1620a8df03fSAndreas Gohr /** @deprecated 2019-06-09 */ 163f41bbe4cSAndreas Gohr function utf8_ucfirst($str) 164f41bbe4cSAndreas Gohr { 1650a8df03fSAndreas Gohr dbg_deprecated(PhpString::class . '::ucfirst()'); 1660da4ba1bSAndreas Gohr return PhpString::ucfirst($str); 16726ece5a7SAndreas Gohr } 168df957b36SAndreas Gohr} 16926ece5a7SAndreas Gohr 170df957b36SAndreas Gohrif (!function_exists('utf8_ucwords')) { 1710a8df03fSAndreas Gohr /** @deprecated 2019-06-09 */ 172f41bbe4cSAndreas Gohr function utf8_ucwords($str) 173f41bbe4cSAndreas Gohr { 1740a8df03fSAndreas Gohr dbg_deprecated(PhpString::class . '::ucwords()'); 1750da4ba1bSAndreas Gohr return PhpString::ucwords($str); 17626ece5a7SAndreas Gohr } 177df957b36SAndreas Gohr} 17826ece5a7SAndreas Gohr 179df957b36SAndreas Gohrif (!function_exists('utf8_deaccent')) { 1800a8df03fSAndreas Gohr /** @deprecated 2019-06-09 */ 181f41bbe4cSAndreas Gohr function utf8_deaccent($str, $case = 0) 182f41bbe4cSAndreas Gohr { 1830a8df03fSAndreas Gohr dbg_deprecated(Clean::class . '::deaccent()'); 1840da4ba1bSAndreas Gohr return Clean::deaccent($str, $case); 18582257610Sandi } 186df957b36SAndreas Gohr} 18782257610Sandi 188df957b36SAndreas Gohrif (!function_exists('utf8_romanize')) { 1890a8df03fSAndreas Gohr /** @deprecated 2019-06-09 */ 190f41bbe4cSAndreas Gohr function utf8_romanize($str) 191f41bbe4cSAndreas Gohr { 1920a8df03fSAndreas Gohr dbg_deprecated(Clean::class . '::romanize()'); 1930da4ba1bSAndreas Gohr return Clean::romanize($str); 1948a831f2bSAndreas Gohr } 195df957b36SAndreas Gohr} 1968a831f2bSAndreas Gohr 197df957b36SAndreas Gohrif (!function_exists('utf8_stripspecials')) { 1980a8df03fSAndreas Gohr /** @deprecated 2019-06-09 */ 199f41bbe4cSAndreas Gohr function utf8_stripspecials($str, $repl = '', $additional = '') 200f41bbe4cSAndreas Gohr { 2010a8df03fSAndreas Gohr dbg_deprecated(Clean::class . '::stripspecials()'); 2020da4ba1bSAndreas Gohr return Clean::stripspecials($str, $repl, $additional); 203099ada41Sandi } 204df957b36SAndreas Gohr} 205099ada41Sandi 206df957b36SAndreas Gohrif (!function_exists('utf8_strpos')) { 2070a8df03fSAndreas Gohr /** @deprecated 2019-06-09 */ 208f41bbe4cSAndreas Gohr function utf8_strpos($haystack, $needle, $offset = 0) 209f41bbe4cSAndreas Gohr { 2100a8df03fSAndreas Gohr dbg_deprecated(PhpString::class . '::strpos()'); 2110da4ba1bSAndreas Gohr return PhpString::strpos($haystack, $needle, $offset); 21272de9068SAndreas Gohr } 213df957b36SAndreas Gohr} 214f29317c1Sandi 215df957b36SAndreas Gohrif (!function_exists('utf8_tohtml')) { 2160a8df03fSAndreas Gohr /** @deprecated 2019-06-09 */ 217c0c77cd2SAndreas Gohr function utf8_tohtml($str, $all = false) 218f41bbe4cSAndreas Gohr { 2190a8df03fSAndreas Gohr dbg_deprecated(Conversion::class . '::toHtml()'); 220c0c77cd2SAndreas Gohr return Conversion::toHtml($str, $all); 2219f9fb0e5STom N Harris } 222df957b36SAndreas Gohr} 2239f9fb0e5STom N Harris 224df957b36SAndreas Gohrif (!function_exists('utf8_unhtml')) { 2250a8df03fSAndreas Gohr /** @deprecated 2019-06-09 */ 226f41bbe4cSAndreas Gohr function utf8_unhtml($str, $enties = false) 227f41bbe4cSAndreas Gohr { 2280a8df03fSAndreas Gohr dbg_deprecated(Conversion::class . '::fromHtml()'); 2290da4ba1bSAndreas Gohr return Conversion::fromHtml($str, $enties); 230ea2eed85Sandi } 231df957b36SAndreas Gohr} 232ea2eed85Sandi 233df957b36SAndreas Gohrif (!function_exists('utf8_to_unicode')) { 2340a8df03fSAndreas Gohr /** @deprecated 2019-06-09 */ 235f41bbe4cSAndreas Gohr function utf8_to_unicode($str, $strict = false) 236f41bbe4cSAndreas Gohr { 2378cbc5ee8SAndreas Gohr dbg_deprecated(Unicode::class . '::fromUtf8()'); 2380da4ba1bSAndreas Gohr return Unicode::fromUtf8($str, $strict); 23982257610Sandi } 240df957b36SAndreas Gohr} 24182257610Sandi 242df957b36SAndreas Gohrif (!function_exists('unicode_to_utf8')) { 2430a8df03fSAndreas Gohr /** @deprecated 2019-06-09 */ 244f41bbe4cSAndreas Gohr function unicode_to_utf8($arr, $strict = false) 245f41bbe4cSAndreas Gohr { 2468cbc5ee8SAndreas Gohr dbg_deprecated(Unicode::class . '::toUtf8()'); 2470da4ba1bSAndreas Gohr return Unicode::toUtf8($arr, $strict); 24882257610Sandi } 249df957b36SAndreas Gohr} 25082257610Sandi 251df957b36SAndreas Gohrif (!function_exists('utf8_to_utf16be')) { 2520a8df03fSAndreas Gohr /** @deprecated 2019-06-09 */ 253f41bbe4cSAndreas Gohr function utf8_to_utf16be($str, $bom = false) 254f41bbe4cSAndreas Gohr { 2550a8df03fSAndreas Gohr dbg_deprecated(Conversion::class . '::toUtf16be()'); 2560da4ba1bSAndreas Gohr return Conversion::toUtf16be($str, $bom); 25715fa0b4fSAndreas Gohr } 258df957b36SAndreas Gohr} 25915fa0b4fSAndreas Gohr 260df957b36SAndreas Gohrif (!function_exists('utf16be_to_utf8')) { 2610a8df03fSAndreas Gohr /** @deprecated 2019-06-09 */ 262f41bbe4cSAndreas Gohr function utf16be_to_utf8($str) 263f41bbe4cSAndreas Gohr { 2640a8df03fSAndreas Gohr dbg_deprecated(Conversion::class . '::fromUtf16be()'); 2650da4ba1bSAndreas Gohr return Conversion::fromUtf16be($str); 26615fa0b4fSAndreas Gohr } 267df957b36SAndreas Gohr} 26815fa0b4fSAndreas Gohr 269df957b36SAndreas Gohrif (!function_exists('utf8_bad_replace')) { 2700a8df03fSAndreas Gohr /** @deprecated 2019-06-09 */ 271f41bbe4cSAndreas Gohr function utf8_bad_replace($str, $replace = '') 272f41bbe4cSAndreas Gohr { 2730a8df03fSAndreas Gohr dbg_deprecated(Clean::class . '::replaceBadBytes()'); 2740da4ba1bSAndreas Gohr return Clean::replaceBadBytes($str, $replace); 2750eac1afbSAndreas Gohr } 276df957b36SAndreas Gohr} 277ab77016bSAndreas Gohr 278df957b36SAndreas Gohrif (!function_exists('utf8_correctIdx')) { 2790a8df03fSAndreas Gohr /** @deprecated 2019-06-09 */ 280f41bbe4cSAndreas Gohr function utf8_correctIdx($str, $i, $next = false) 281f41bbe4cSAndreas Gohr { 2820a8df03fSAndreas Gohr dbg_deprecated(Clean::class . '::correctIdx()'); 2830da4ba1bSAndreas Gohr return Clean::correctIdx($str, $i, $next); 2845953e889Schris } 285df957b36SAndreas Gohr} 286