xref: /dokuwiki/inc/utf8.php (revision d4f83172d9533c4d84f450fe22ef630816b21d75)
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