1<?php 2/** 3 * UTF8 helper functions 4 * 5 * This file now only intitializes the UTF-8 capability detection and defines helper 6 * functions if needed. All actual code is in the \dokuwiki\Utf8 classes 7 * 8 * @author Andreas Gohr <andi@splitbrain.org> 9 */ 10 11use dokuwiki\Utf8\Clean; 12use dokuwiki\Utf8\Conversion; 13use dokuwiki\Utf8\PhpString; 14use dokuwiki\Utf8\Unicode; 15 16/** 17 * check for mb_string support 18 */ 19if (!defined('UTF8_MBSTRING')) { 20 if (function_exists('mb_substr') && !defined('UTF8_NOMBSTRING')) { 21 define('UTF8_MBSTRING', 1); 22 } else { 23 define('UTF8_MBSTRING', 0); 24 } 25} 26 27/** 28 * Check if PREG was compiled with UTF-8 support 29 * 30 * Without this many of the functions below will not work, so this is a minimal requirement 31 */ 32if (!defined('UTF8_PREGSUPPORT')) { 33 define('UTF8_PREGSUPPORT', (bool)@preg_match('/^.$/u', 'ñ')); 34} 35 36/** 37 * Check if PREG was compiled with Unicode Property support 38 * 39 * This is not required for the functions below, but might be needed in a UTF-8 aware application 40 */ 41if (!defined('UTF8_PROPERTYSUPPORT')) { 42 define('UTF8_PROPERTYSUPPORT', (bool)@preg_match('/^\pL$/u', 'ñ')); 43} 44 45 46if (UTF8_MBSTRING) { 47 mb_internal_encoding('UTF-8'); 48} 49 50 51if (!function_exists('utf8_isASCII')) { 52 /** @deprecated 2019-06-09 */ 53 function utf8_isASCII($str) 54 { 55 dbg_deprecated(Clean::class . '::isASCII()'); 56 return Clean::isASCII($str); 57 } 58} 59 60 61if (!function_exists('utf8_strip')) { 62 /** @deprecated 2019-06-09 */ 63 function utf8_strip($str) 64 { 65 dbg_deprecated(Clean::class . '::strip()'); 66 return Clean::strip($str); 67 } 68} 69 70if (!function_exists('utf8_check')) { 71 /** @deprecated 2019-06-09 */ 72 function utf8_check($str) 73 { 74 dbg_deprecated(Clean::class . '::isUtf8()'); 75 return Clean::isUtf8($str); 76 } 77} 78 79if (!function_exists('utf8_basename')) { 80 /** @deprecated 2019-06-09 */ 81 function utf8_basename($path, $suffix = '') 82 { 83 dbg_deprecated(PhpString::class . '::basename()'); 84 return PhpString::basename($path, $suffix); 85 } 86} 87 88if (!function_exists('utf8_strlen')) { 89 /** @deprecated 2019-06-09 */ 90 function utf8_strlen($str) 91 { 92 dbg_deprecated(PhpString::class . '::strlen()'); 93 return PhpString::strlen($str); 94 } 95} 96 97if (!function_exists('utf8_substr')) { 98 /** @deprecated 2019-06-09 */ 99 function utf8_substr($str, $offset, $length = null) 100 { 101 dbg_deprecated(PhpString::class . '::substr()'); 102 return PhpString::substr($str, $offset, $length); 103 } 104} 105 106if (!function_exists('utf8_substr_replace')) { 107 /** @deprecated 2019-06-09 */ 108 function utf8_substr_replace($string, $replacement, $start, $length = 0) 109 { 110 dbg_deprecated(PhpString::class . '::substr_replace()'); 111 return PhpString::substr_replace($string, $replacement, $start, $length); 112 } 113} 114 115if (!function_exists('utf8_ltrim')) { 116 /** @deprecated 2019-06-09 */ 117 function utf8_ltrim($str, $charlist = '') 118 { 119 dbg_deprecated(PhpString::class . '::ltrim()'); 120 return PhpString::ltrim($str, $charlist); 121 } 122} 123 124if (!function_exists('utf8_rtrim')) { 125 /** @deprecated 2019-06-09 */ 126 function utf8_rtrim($str, $charlist = '') 127 { 128 dbg_deprecated(PhpString::class . '::rtrim()'); 129 return PhpString::rtrim($str, $charlist); 130 } 131} 132 133if (!function_exists('utf8_trim')) { 134 /** @deprecated 2019-06-09 */ 135 function utf8_trim($str, $charlist = '') 136 { 137 dbg_deprecated(PhpString::class . '::trim()'); 138 return PhpString::trim($str, $charlist); 139 } 140} 141 142if (!function_exists('utf8_strtolower')) { 143 /** @deprecated 2019-06-09 */ 144 function utf8_strtolower($str) 145 { 146 dbg_deprecated(PhpString::class . '::strtolower()'); 147 return PhpString::strtolower($str); 148 } 149} 150 151if (!function_exists('utf8_strtoupper')) { 152 /** @deprecated 2019-06-09 */ 153 function utf8_strtoupper($str) 154 { 155 dbg_deprecated(PhpString::class . '::strtoupper()'); 156 return PhpString::strtoupper($str); 157 } 158} 159 160if (!function_exists('utf8_ucfirst')) { 161 /** @deprecated 2019-06-09 */ 162 function utf8_ucfirst($str) 163 { 164 dbg_deprecated(PhpString::class . '::ucfirst()'); 165 return PhpString::ucfirst($str); 166 } 167} 168 169if (!function_exists('utf8_ucwords')) { 170 /** @deprecated 2019-06-09 */ 171 function utf8_ucwords($str) 172 { 173 dbg_deprecated(PhpString::class . '::ucwords()'); 174 return PhpString::ucwords($str); 175 } 176} 177 178if (!function_exists('utf8_deaccent')) { 179 /** @deprecated 2019-06-09 */ 180 function utf8_deaccent($str, $case = 0) 181 { 182 dbg_deprecated(Clean::class . '::deaccent()'); 183 return Clean::deaccent($str, $case); 184 } 185} 186 187if (!function_exists('utf8_romanize')) { 188 /** @deprecated 2019-06-09 */ 189 function utf8_romanize($str) 190 { 191 dbg_deprecated(Clean::class . '::romanize()'); 192 return Clean::romanize($str); 193 } 194} 195 196if (!function_exists('utf8_stripspecials')) { 197 /** @deprecated 2019-06-09 */ 198 function utf8_stripspecials($str, $repl = '', $additional = '') 199 { 200 dbg_deprecated(Clean::class . '::stripspecials()'); 201 return Clean::stripspecials($str, $repl, $additional); 202 } 203} 204 205if (!function_exists('utf8_strpos')) { 206 /** @deprecated 2019-06-09 */ 207 function utf8_strpos($haystack, $needle, $offset = 0) 208 { 209 dbg_deprecated(PhpString::class . '::strpos()'); 210 return PhpString::strpos($haystack, $needle, $offset); 211 } 212} 213 214if (!function_exists('utf8_tohtml')) { 215 /** @deprecated 2019-06-09 */ 216 function utf8_tohtml($str, $all = false) 217 { 218 dbg_deprecated(Conversion::class . '::toHtml()'); 219 return Conversion::toHtml($str, $all); 220 } 221} 222 223if (!function_exists('utf8_unhtml')) { 224 /** @deprecated 2019-06-09 */ 225 function utf8_unhtml($str, $enties = false) 226 { 227 dbg_deprecated(Conversion::class . '::fromHtml()'); 228 return Conversion::fromHtml($str, $enties); 229 } 230} 231 232if (!function_exists('utf8_to_unicode')) { 233 /** @deprecated 2019-06-09 */ 234 function utf8_to_unicode($str, $strict = false) 235 { 236 dbg_deprecated(Unicode::class . '::fromUtf8()'); 237 return Unicode::fromUtf8($str, $strict); 238 } 239} 240 241if (!function_exists('unicode_to_utf8')) { 242 /** @deprecated 2019-06-09 */ 243 function unicode_to_utf8($arr, $strict = false) 244 { 245 dbg_deprecated(Unicode::class . '::toUtf8()'); 246 return Unicode::toUtf8($arr, $strict); 247 } 248} 249 250if (!function_exists('utf8_to_utf16be')) { 251 /** @deprecated 2019-06-09 */ 252 function utf8_to_utf16be($str, $bom = false) 253 { 254 dbg_deprecated(Conversion::class . '::toUtf16be()'); 255 return Conversion::toUtf16be($str, $bom); 256 } 257} 258 259if (!function_exists('utf16be_to_utf8')) { 260 /** @deprecated 2019-06-09 */ 261 function utf16be_to_utf8($str) 262 { 263 dbg_deprecated(Conversion::class . '::fromUtf16be()'); 264 return Conversion::fromUtf16be($str); 265 } 266} 267 268if (!function_exists('utf8_bad_replace')) { 269 /** @deprecated 2019-06-09 */ 270 function utf8_bad_replace($str, $replace = '') 271 { 272 dbg_deprecated(Clean::class . '::replaceBadBytes()'); 273 return Clean::replaceBadBytes($str, $replace); 274 } 275} 276 277if (!function_exists('utf8_correctIdx')) { 278 /** @deprecated 2019-06-09 */ 279 function utf8_correctIdx($str, $i, $next = false) 280 { 281 dbg_deprecated(Clean::class . '::correctIdx()'); 282 return Clean::correctIdx($str, $i, $next); 283 } 284} 285