1ed7b5f09Sandi<?php 282257610Sandi/** 382257610Sandi * UTF8 helper functions 482257610Sandi * 50da4ba1bSAndreas Gohr * This file now only intitializes the UTF-8 capability detection and defines helper 60da4ba1bSAndreas Gohr * functions if needed. All actual code is in the \dokuwiki\Utf8 classes 70da4ba1bSAndreas Gohr * 882257610Sandi * @author Andreas Gohr <andi@splitbrain.org> 982257610Sandi */ 1082257610Sandi 110da4ba1bSAndreas Gohruse dokuwiki\Utf8\Clean; 120da4ba1bSAndreas Gohruse dokuwiki\Utf8\Conversion; 130da4ba1bSAndreas Gohruse dokuwiki\Utf8\PhpString; 140da4ba1bSAndreas Gohruse dokuwiki\Utf8\Unicode; 150da4ba1bSAndreas Gohr 16ab77016bSAndreas Gohr/** 17ab77016bSAndreas Gohr * check for mb_string support 18ab77016bSAndreas Gohr */ 19ab77016bSAndreas Gohrif (!defined('UTF8_MBSTRING')) { 20ab77016bSAndreas Gohr if (function_exists('mb_substr') && !defined('UTF8_NOMBSTRING')) { 21ab77016bSAndreas Gohr define('UTF8_MBSTRING', 1); 22ab77016bSAndreas Gohr } else { 23ab77016bSAndreas Gohr define('UTF8_MBSTRING', 0); 24ab77016bSAndreas Gohr } 25ab77016bSAndreas Gohr} 26ab77016bSAndreas Gohr 273161005dSAndreas Gohr/** 283161005dSAndreas Gohr * Check if PREG was compiled with UTF-8 support 293161005dSAndreas Gohr * 303161005dSAndreas Gohr * Without this many of the functions below will not work, so this is a minimal requirement 313161005dSAndreas Gohr */ 323161005dSAndreas Gohrif (!defined('UTF8_PREGSUPPORT')) { 333161005dSAndreas Gohr define('UTF8_PREGSUPPORT', (bool)@preg_match('/^.$/u', 'ñ')); 343161005dSAndreas Gohr} 353161005dSAndreas Gohr 363161005dSAndreas Gohr/** 373161005dSAndreas Gohr * Check if PREG was compiled with Unicode Property support 383161005dSAndreas Gohr * 393161005dSAndreas Gohr * This is not required for the functions below, but might be needed in a UTF-8 aware application 403161005dSAndreas Gohr */ 413161005dSAndreas Gohrif (!defined('UTF8_PROPERTYSUPPORT')) { 423161005dSAndreas Gohr define('UTF8_PROPERTYSUPPORT', (bool)@preg_match('/^\pL$/u', 'ñ')); 433161005dSAndreas Gohr} 443161005dSAndreas Gohr 453161005dSAndreas Gohr 46f41bbe4cSAndreas Gohrif (UTF8_MBSTRING) { 47f41bbe4cSAndreas Gohr mb_internal_encoding('UTF-8'); 48f41bbe4cSAndreas Gohr} 49f41bbe4cSAndreas Gohr 505e613a5cSchris 51df957b36SAndreas Gohrif (!function_exists('utf8_isASCII')) { 520a8df03fSAndreas Gohr /** @deprecated 2019-06-09 */ 53f41bbe4cSAndreas Gohr function utf8_isASCII($str) 54f41bbe4cSAndreas Gohr { 550a8df03fSAndreas Gohr dbg_deprecated(Clean::class . '::isASCII()'); 560da4ba1bSAndreas Gohr return Clean::isASCII($str); 5744f669e9Sandi } 58df957b36SAndreas Gohr} 5944f669e9Sandi 60f41bbe4cSAndreas Gohr 61df957b36SAndreas Gohrif (!function_exists('utf8_strip')) { 620a8df03fSAndreas Gohr /** @deprecated 2019-06-09 */ 63f41bbe4cSAndreas Gohr function utf8_strip($str) 64f41bbe4cSAndreas Gohr { 650a8df03fSAndreas Gohr dbg_deprecated(Clean::class . '::strip()'); 660da4ba1bSAndreas Gohr return Clean::strip($str); 67e1906e6eSandi } 68df957b36SAndreas Gohr} 69e1906e6eSandi 70df957b36SAndreas Gohrif (!function_exists('utf8_check')) { 710a8df03fSAndreas Gohr /** @deprecated 2019-06-09 */ 72f41bbe4cSAndreas Gohr function utf8_check($str) 73f41bbe4cSAndreas Gohr { 740a8df03fSAndreas Gohr dbg_deprecated(Clean::class . '::isUtf8()'); 750da4ba1bSAndreas Gohr return Clean::isUtf8($str); 76f29bd553Sandi } 77df957b36SAndreas Gohr} 7849c713a3Sandi 79f393a4ebSAndreas Gohrif (!function_exists('utf8_basename')) { 800a8df03fSAndreas Gohr /** @deprecated 2019-06-09 */ 81f41bbe4cSAndreas Gohr function utf8_basename($path, $suffix = '') 82f41bbe4cSAndreas Gohr { 830a8df03fSAndreas Gohr dbg_deprecated(PhpString::class . '::basename()'); 840da4ba1bSAndreas Gohr return PhpString::basename($path, $suffix); 85f393a4ebSAndreas Gohr } 86f393a4ebSAndreas Gohr} 87f393a4ebSAndreas Gohr 88df957b36SAndreas Gohrif (!function_exists('utf8_strlen')) { 890a8df03fSAndreas Gohr /** @deprecated 2019-06-09 */ 90f41bbe4cSAndreas Gohr function utf8_strlen($str) 91f41bbe4cSAndreas Gohr { 920a8df03fSAndreas Gohr dbg_deprecated(PhpString::class . '::strlen()'); 930da4ba1bSAndreas Gohr return PhpString::strlen($str); 942f954959Sandi } 95df957b36SAndreas Gohr} 962f954959Sandi 97df957b36SAndreas Gohrif (!function_exists('utf8_substr')) { 980a8df03fSAndreas Gohr /** @deprecated 2019-06-09 */ 99f41bbe4cSAndreas Gohr function utf8_substr($str, $offset, $length = null) 100f41bbe4cSAndreas Gohr { 1010a8df03fSAndreas Gohr dbg_deprecated(PhpString::class . '::substr()'); 1020da4ba1bSAndreas Gohr return PhpString::substr($str, $offset, $length); 1032626ee0cSchris } 104df957b36SAndreas Gohr} 10510f09f2aSAndreas Gohr 106df957b36SAndreas Gohrif (!function_exists('utf8_substr_replace')) { 1070a8df03fSAndreas Gohr /** @deprecated 2019-06-09 */ 108f41bbe4cSAndreas Gohr function utf8_substr_replace($string, $replacement, $start, $length = 0) 109f41bbe4cSAndreas Gohr { 1100a8df03fSAndreas Gohr dbg_deprecated(PhpString::class . '::substr_replace()'); 1110da4ba1bSAndreas Gohr return PhpString::substr_replace($string, $replacement, $start, $length); 112dc57ef04Sandi } 113df957b36SAndreas Gohr} 114dc57ef04Sandi 115df957b36SAndreas Gohrif (!function_exists('utf8_ltrim')) { 1160a8df03fSAndreas Gohr /** @deprecated 2019-06-09 */ 117f41bbe4cSAndreas Gohr function utf8_ltrim($str, $charlist = '') 118f41bbe4cSAndreas Gohr { 1190a8df03fSAndreas Gohr dbg_deprecated(PhpString::class . '::ltrim()'); 1200da4ba1bSAndreas Gohr return PhpString::ltrim($str, $charlist); 121f29317c1Sandi } 122df957b36SAndreas Gohr} 123f29317c1Sandi 124df957b36SAndreas Gohrif (!function_exists('utf8_rtrim')) { 1250a8df03fSAndreas Gohr /** @deprecated 2019-06-09 */ 126f41bbe4cSAndreas Gohr function utf8_rtrim($str, $charlist = '') 127f41bbe4cSAndreas Gohr { 1280a8df03fSAndreas Gohr dbg_deprecated(PhpString::class . '::rtrim()'); 1290da4ba1bSAndreas Gohr return PhpString::rtrim($str, $charlist); 130f29317c1Sandi } 131df957b36SAndreas Gohr} 132f29317c1Sandi 133df957b36SAndreas Gohrif (!function_exists('utf8_trim')) { 1340a8df03fSAndreas Gohr /** @deprecated 2019-06-09 */ 135f41bbe4cSAndreas Gohr function utf8_trim($str, $charlist = '') 136f41bbe4cSAndreas Gohr { 1370a8df03fSAndreas Gohr dbg_deprecated(PhpString::class . '::trim()'); 1380da4ba1bSAndreas Gohr return PhpString::trim($str, $charlist); 139f29317c1Sandi } 140df957b36SAndreas Gohr} 141f29317c1Sandi 142df957b36SAndreas Gohrif (!function_exists('utf8_strtolower')) { 1430a8df03fSAndreas Gohr /** @deprecated 2019-06-09 */ 144f41bbe4cSAndreas Gohr function utf8_strtolower($str) 145f41bbe4cSAndreas Gohr { 1460a8df03fSAndreas Gohr dbg_deprecated(PhpString::class . '::strtolower()'); 1470da4ba1bSAndreas Gohr return PhpString::strtolower($str); 14882257610Sandi } 149df957b36SAndreas Gohr} 15082257610Sandi 151df957b36SAndreas Gohrif (!function_exists('utf8_strtoupper')) { 1520a8df03fSAndreas Gohr /** @deprecated 2019-06-09 */ 153f41bbe4cSAndreas Gohr function utf8_strtoupper($str) 154f41bbe4cSAndreas Gohr { 1550a8df03fSAndreas Gohr dbg_deprecated(PhpString::class . '::strtoupper()'); 1560da4ba1bSAndreas Gohr return PhpString::strtoupper($str); 15782257610Sandi } 158df957b36SAndreas Gohr} 15982257610Sandi 160df957b36SAndreas Gohrif (!function_exists('utf8_ucfirst')) { 1610a8df03fSAndreas Gohr /** @deprecated 2019-06-09 */ 162f41bbe4cSAndreas Gohr function utf8_ucfirst($str) 163f41bbe4cSAndreas Gohr { 1640a8df03fSAndreas Gohr dbg_deprecated(PhpString::class . '::ucfirst()'); 1650da4ba1bSAndreas Gohr return PhpString::ucfirst($str); 16626ece5a7SAndreas Gohr } 167df957b36SAndreas Gohr} 16826ece5a7SAndreas Gohr 169df957b36SAndreas Gohrif (!function_exists('utf8_ucwords')) { 1700a8df03fSAndreas Gohr /** @deprecated 2019-06-09 */ 171f41bbe4cSAndreas Gohr function utf8_ucwords($str) 172f41bbe4cSAndreas Gohr { 1730a8df03fSAndreas Gohr dbg_deprecated(PhpString::class . '::ucwords()'); 1740da4ba1bSAndreas Gohr return PhpString::ucwords($str); 17526ece5a7SAndreas Gohr } 176df957b36SAndreas Gohr} 17726ece5a7SAndreas Gohr 178df957b36SAndreas Gohrif (!function_exists('utf8_deaccent')) { 1790a8df03fSAndreas Gohr /** @deprecated 2019-06-09 */ 180f41bbe4cSAndreas Gohr function utf8_deaccent($str, $case = 0) 181f41bbe4cSAndreas Gohr { 1820a8df03fSAndreas Gohr dbg_deprecated(Clean::class . '::deaccent()'); 1830da4ba1bSAndreas Gohr return Clean::deaccent($str, $case); 18482257610Sandi } 185df957b36SAndreas Gohr} 18682257610Sandi 187df957b36SAndreas Gohrif (!function_exists('utf8_romanize')) { 1880a8df03fSAndreas Gohr /** @deprecated 2019-06-09 */ 189f41bbe4cSAndreas Gohr function utf8_romanize($str) 190f41bbe4cSAndreas Gohr { 1910a8df03fSAndreas Gohr dbg_deprecated(Clean::class . '::romanize()'); 1920da4ba1bSAndreas Gohr return Clean::romanize($str); 1938a831f2bSAndreas Gohr } 194df957b36SAndreas Gohr} 1958a831f2bSAndreas Gohr 196df957b36SAndreas Gohrif (!function_exists('utf8_stripspecials')) { 1970a8df03fSAndreas Gohr /** @deprecated 2019-06-09 */ 198f41bbe4cSAndreas Gohr function utf8_stripspecials($str, $repl = '', $additional = '') 199f41bbe4cSAndreas Gohr { 2000a8df03fSAndreas Gohr dbg_deprecated(Clean::class . '::stripspecials()'); 2010da4ba1bSAndreas Gohr return Clean::stripspecials($str, $repl, $additional); 202099ada41Sandi } 203df957b36SAndreas Gohr} 204099ada41Sandi 205df957b36SAndreas Gohrif (!function_exists('utf8_strpos')) { 2060a8df03fSAndreas Gohr /** @deprecated 2019-06-09 */ 207f41bbe4cSAndreas Gohr function utf8_strpos($haystack, $needle, $offset = 0) 208f41bbe4cSAndreas Gohr { 2090a8df03fSAndreas Gohr dbg_deprecated(PhpString::class . '::strpos()'); 2100da4ba1bSAndreas Gohr return PhpString::strpos($haystack, $needle, $offset); 21172de9068SAndreas Gohr } 212df957b36SAndreas Gohr} 213f29317c1Sandi 214df957b36SAndreas Gohrif (!function_exists('utf8_tohtml')) { 2150a8df03fSAndreas Gohr /** @deprecated 2019-06-09 */ 216*c0c77cd2SAndreas Gohr function utf8_tohtml($str, $all = false) 217f41bbe4cSAndreas Gohr { 2180a8df03fSAndreas Gohr dbg_deprecated(Conversion::class . '::toHtml()'); 219*c0c77cd2SAndreas Gohr return Conversion::toHtml($str, $all); 2209f9fb0e5STom N Harris } 221df957b36SAndreas Gohr} 2229f9fb0e5STom N Harris 223df957b36SAndreas Gohrif (!function_exists('utf8_unhtml')) { 2240a8df03fSAndreas Gohr /** @deprecated 2019-06-09 */ 225f41bbe4cSAndreas Gohr function utf8_unhtml($str, $enties = false) 226f41bbe4cSAndreas Gohr { 2270a8df03fSAndreas Gohr dbg_deprecated(Conversion::class . '::fromHtml()'); 2280da4ba1bSAndreas Gohr return Conversion::fromHtml($str, $enties); 229ea2eed85Sandi } 230df957b36SAndreas Gohr} 231ea2eed85Sandi 232df957b36SAndreas Gohrif (!function_exists('utf8_to_unicode')) { 2330a8df03fSAndreas Gohr /** @deprecated 2019-06-09 */ 234f41bbe4cSAndreas Gohr function utf8_to_unicode($str, $strict = false) 235f41bbe4cSAndreas Gohr { 2368cbc5ee8SAndreas Gohr dbg_deprecated(Unicode::class . '::fromUtf8()'); 2370da4ba1bSAndreas Gohr return Unicode::fromUtf8($str, $strict); 23882257610Sandi } 239df957b36SAndreas Gohr} 24082257610Sandi 241df957b36SAndreas Gohrif (!function_exists('unicode_to_utf8')) { 2420a8df03fSAndreas Gohr /** @deprecated 2019-06-09 */ 243f41bbe4cSAndreas Gohr function unicode_to_utf8($arr, $strict = false) 244f41bbe4cSAndreas Gohr { 2458cbc5ee8SAndreas Gohr dbg_deprecated(Unicode::class . '::toUtf8()'); 2460da4ba1bSAndreas Gohr return Unicode::toUtf8($arr, $strict); 24782257610Sandi } 248df957b36SAndreas Gohr} 24982257610Sandi 250df957b36SAndreas Gohrif (!function_exists('utf8_to_utf16be')) { 2510a8df03fSAndreas Gohr /** @deprecated 2019-06-09 */ 252f41bbe4cSAndreas Gohr function utf8_to_utf16be($str, $bom = false) 253f41bbe4cSAndreas Gohr { 2540a8df03fSAndreas Gohr dbg_deprecated(Conversion::class . '::toUtf16be()'); 2550da4ba1bSAndreas Gohr return Conversion::toUtf16be($str, $bom); 25615fa0b4fSAndreas Gohr } 257df957b36SAndreas Gohr} 25815fa0b4fSAndreas Gohr 259df957b36SAndreas Gohrif (!function_exists('utf16be_to_utf8')) { 2600a8df03fSAndreas Gohr /** @deprecated 2019-06-09 */ 261f41bbe4cSAndreas Gohr function utf16be_to_utf8($str) 262f41bbe4cSAndreas Gohr { 2630a8df03fSAndreas Gohr dbg_deprecated(Conversion::class . '::fromUtf16be()'); 2640da4ba1bSAndreas Gohr return Conversion::fromUtf16be($str); 26515fa0b4fSAndreas Gohr } 266df957b36SAndreas Gohr} 26715fa0b4fSAndreas Gohr 268df957b36SAndreas Gohrif (!function_exists('utf8_bad_replace')) { 2690a8df03fSAndreas Gohr /** @deprecated 2019-06-09 */ 270f41bbe4cSAndreas Gohr function utf8_bad_replace($str, $replace = '') 271f41bbe4cSAndreas Gohr { 2720a8df03fSAndreas Gohr dbg_deprecated(Clean::class . '::replaceBadBytes()'); 2730da4ba1bSAndreas Gohr return Clean::replaceBadBytes($str, $replace); 2740eac1afbSAndreas Gohr } 275df957b36SAndreas Gohr} 276ab77016bSAndreas Gohr 277df957b36SAndreas Gohrif (!function_exists('utf8_correctIdx')) { 2780a8df03fSAndreas Gohr /** @deprecated 2019-06-09 */ 279f41bbe4cSAndreas Gohr function utf8_correctIdx($str, $i, $next = false) 280f41bbe4cSAndreas Gohr { 2810a8df03fSAndreas Gohr dbg_deprecated(Clean::class . '::correctIdx()'); 2820da4ba1bSAndreas Gohr return Clean::correctIdx($str, $i, $next); 2835953e889Schris } 284df957b36SAndreas Gohr} 285