Issues (847)

Security Analysis    not enabled

This project does not seem to handle request data directly as such no vulnerable execution paths were found.

  Cross-Site Scripting
Cross-Site Scripting enables an attacker to inject code into the response of a web-request that is viewed by other users. It can for example be used to bypass access controls, or even to take over other users' accounts.
  File Exposure
File Exposure allows an attacker to gain access to local files that he should not be able to access. These files can for example include database credentials, or other configuration files.
  File Manipulation
File Manipulation enables an attacker to write custom data to files. This potentially leads to injection of arbitrary code on the server.
  Object Injection
Object Injection enables an attacker to inject an object into PHP code, and can lead to arbitrary code execution, file exposure, or file manipulation attacks.
  Code Injection
Code Injection enables an attacker to execute arbitrary code on the server.
  Response Splitting
Response Splitting can be used to send arbitrary responses.
  File Inclusion
File Inclusion enables an attacker to inject custom files into PHP's file loading mechanism, either explicitly passed to include, or for example via PHP's auto-loading mechanism.
  Command Injection
Command Injection enables an attacker to inject a shell command that is execute with the privileges of the web-server. This can be used to expose sensitive data, or gain access of your server.
  SQL Injection
SQL Injection enables an attacker to execute arbitrary SQL code on your database server gaining access to user data, or manipulating user data.
  XPath Injection
XPath Injection enables an attacker to modify the parts of XML document that are read. If that XML document is for example used for authentication, this can lead to further vulnerabilities similar to SQL Injection.
  LDAP Injection
LDAP Injection enables an attacker to inject LDAP statements potentially granting permission to run unauthorized queries, or modify content inside the LDAP tree.
  Header Injection
  Other Vulnerability
This category comprises other attack vectors such as manipulating the PHP runtime, loading custom extensions, freezing the runtime, or similar.
  Regex Injection
Regex Injection enables an attacker to execute arbitrary code in your PHP process.
  XML Injection
XML Injection enables an attacker to read files on your local filesystem including configuration files, or can be abused to freeze your web-server process.
  Variable Injection
Variable Injection enables an attacker to overwrite program variables with custom data, and can lead to further vulnerabilities.
Unfortunately, the security analysis is currently not available for your project. If you are a non-commercial open-source project, please contact support to gain access.

inc/utf8.php (25 issues)

Upgrade to new PHP Analysis Engine

These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more

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 <[email protected]>
9
 */
10
11
use dokuwiki\Utf8\Clean;
12
use dokuwiki\Utf8\Conversion;
13
use dokuwiki\Utf8\PhpString;
14
use dokuwiki\Utf8\Unicode;
15
16
/**
17
 * check for mb_string support
18
 */
19
if (!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
 */
32
if (!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
 */
41
if (!defined('UTF8_PROPERTYSUPPORT')) {
42
    define('UTF8_PROPERTYSUPPORT', (bool)@preg_match('/^\pL$/u', 'ñ'));
43
}
44
45
46
if (UTF8_MBSTRING) {
47
    mb_internal_encoding('UTF-8');
48
}
49
50
51
if (!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
61
if (!function_exists('utf8_strip')) {
62
    /** @deprecated 2019-06-09 */
63
    function utf8_strip($str)
0 ignored issues
show
It is generally recommended to explicitly declare the visibility for methods.

Adding explicit visibility (private, protected, or public) is generally recommend to communicate to other developers how, and from where this method is intended to be used.

Loading history...
64
    {
65
        dbg_deprecated(Clean::class . '::strip()');
66
        return Clean::strip($str);
67
    }
68
}
69
70
if (!function_exists('utf8_check')) {
71
    /** @deprecated 2019-06-09 */
72
    function utf8_check($str)
0 ignored issues
show
It is generally recommended to explicitly declare the visibility for methods.

Adding explicit visibility (private, protected, or public) is generally recommend to communicate to other developers how, and from where this method is intended to be used.

Loading history...
73
    {
74
        dbg_deprecated(Clean::class . '::isUtf8()');
75
        return Clean::isUtf8($str);
76
    }
77
}
78
79
if (!function_exists('utf8_basename')) {
80
    /** @deprecated 2019-06-09 */
81
    function utf8_basename($path, $suffix = '')
0 ignored issues
show
It is generally recommended to explicitly declare the visibility for methods.

Adding explicit visibility (private, protected, or public) is generally recommend to communicate to other developers how, and from where this method is intended to be used.

Loading history...
82
    {
83
        dbg_deprecated(PhpString::class . '::basename()');
84
        return PhpString::basename($path, $suffix);
85
    }
86
}
87
88
if (!function_exists('utf8_strlen')) {
89
    /** @deprecated 2019-06-09 */
90
    function utf8_strlen($str)
0 ignored issues
show
It is generally recommended to explicitly declare the visibility for methods.

Adding explicit visibility (private, protected, or public) is generally recommend to communicate to other developers how, and from where this method is intended to be used.

Loading history...
91
    {
92
        dbg_deprecated(PhpString::class . '::strlen()');
93
        return PhpString::strlen($str);
94
    }
95
}
96
97
if (!function_exists('utf8_substr')) {
98
    /** @deprecated 2019-06-09 */
99
    function utf8_substr($str, $offset, $length = null)
0 ignored issues
show
It is generally recommended to explicitly declare the visibility for methods.

Adding explicit visibility (private, protected, or public) is generally recommend to communicate to other developers how, and from where this method is intended to be used.

Loading history...
100
    {
101
        dbg_deprecated(PhpString::class . '::substr()');
102
        return PhpString::substr($str, $offset, $length);
103
    }
104
}
105
106
if (!function_exists('utf8_substr_replace')) {
107
    /** @deprecated 2019-06-09 */
108
    function utf8_substr_replace($string, $replacement, $start, $length = 0)
0 ignored issues
show
It is generally recommended to explicitly declare the visibility for methods.

Adding explicit visibility (private, protected, or public) is generally recommend to communicate to other developers how, and from where this method is intended to be used.

Loading history...
109
    {
110
        dbg_deprecated(PhpString::class . '::substr_replace()');
111
        return PhpString::substr_replace($string, $replacement, $start, $length);
112
    }
113
}
114
115
if (!function_exists('utf8_ltrim')) {
116
    /** @deprecated 2019-06-09 */
117
    function utf8_ltrim($str, $charlist = '')
0 ignored issues
show
It is generally recommended to explicitly declare the visibility for methods.

Adding explicit visibility (private, protected, or public) is generally recommend to communicate to other developers how, and from where this method is intended to be used.

Loading history...
118
    {
119
        dbg_deprecated(PhpString::class . '::ltrim()');
120
        return PhpString::ltrim($str, $charlist);
121
    }
122
}
123
124
if (!function_exists('utf8_rtrim')) {
125
    /** @deprecated 2019-06-09 */
126
    function utf8_rtrim($str, $charlist = '')
0 ignored issues
show
It is generally recommended to explicitly declare the visibility for methods.

Adding explicit visibility (private, protected, or public) is generally recommend to communicate to other developers how, and from where this method is intended to be used.

Loading history...
127
    {
128
        dbg_deprecated(PhpString::class . '::rtrim()');
129
        return PhpString::rtrim($str, $charlist);
130
    }
131
}
132
133
if (!function_exists('utf8_trim')) {
134
    /** @deprecated 2019-06-09 */
135
    function utf8_trim($str, $charlist = '')
0 ignored issues
show
It is generally recommended to explicitly declare the visibility for methods.

Adding explicit visibility (private, protected, or public) is generally recommend to communicate to other developers how, and from where this method is intended to be used.

Loading history...
136
    {
137
        dbg_deprecated(PhpString::class . '::trim()');
138
        return PhpString::trim($str, $charlist);
139
    }
140
}
141
142
if (!function_exists('utf8_strtolower')) {
143
    /** @deprecated 2019-06-09 */
144
    function utf8_strtolower($str)
0 ignored issues
show
It is generally recommended to explicitly declare the visibility for methods.

Adding explicit visibility (private, protected, or public) is generally recommend to communicate to other developers how, and from where this method is intended to be used.

Loading history...
145
    {
146
        dbg_deprecated(PhpString::class . '::strtolower()');
147
        return PhpString::strtolower($str);
148
    }
149
}
150
151
if (!function_exists('utf8_strtoupper')) {
152
    /** @deprecated 2019-06-09 */
153
    function utf8_strtoupper($str)
0 ignored issues
show
It is generally recommended to explicitly declare the visibility for methods.

Adding explicit visibility (private, protected, or public) is generally recommend to communicate to other developers how, and from where this method is intended to be used.

Loading history...
154
    {
155
        dbg_deprecated(PhpString::class . '::strtoupper()');
156
        return PhpString::strtoupper($str);
157
    }
158
}
159
160
if (!function_exists('utf8_ucfirst')) {
161
    /** @deprecated 2019-06-09 */
162
    function utf8_ucfirst($str)
0 ignored issues
show
It is generally recommended to explicitly declare the visibility for methods.

Adding explicit visibility (private, protected, or public) is generally recommend to communicate to other developers how, and from where this method is intended to be used.

Loading history...
163
    {
164
        dbg_deprecated(PhpString::class . '::ucfirst()');
165
        return PhpString::ucfirst($str);
166
    }
167
}
168
169
if (!function_exists('utf8_ucwords')) {
170
    /** @deprecated 2019-06-09 */
171
    function utf8_ucwords($str)
0 ignored issues
show
It is generally recommended to explicitly declare the visibility for methods.

Adding explicit visibility (private, protected, or public) is generally recommend to communicate to other developers how, and from where this method is intended to be used.

Loading history...
172
    {
173
        dbg_deprecated(PhpString::class . '::ucwords()');
174
        return PhpString::ucwords($str);
175
    }
176
}
177
178
if (!function_exists('utf8_deaccent')) {
179
    /** @deprecated 2019-06-09 */
180
    function utf8_deaccent($str, $case = 0)
0 ignored issues
show
It is generally recommended to explicitly declare the visibility for methods.

Adding explicit visibility (private, protected, or public) is generally recommend to communicate to other developers how, and from where this method is intended to be used.

Loading history...
181
    {
182
        dbg_deprecated(Clean::class . '::deaccent()');
183
        return Clean::deaccent($str, $case);
184
    }
185
}
186
187
if (!function_exists('utf8_romanize')) {
188
    /** @deprecated 2019-06-09 */
189
    function utf8_romanize($str)
0 ignored issues
show
It is generally recommended to explicitly declare the visibility for methods.

Adding explicit visibility (private, protected, or public) is generally recommend to communicate to other developers how, and from where this method is intended to be used.

Loading history...
190
    {
191
        dbg_deprecated(Clean::class . '::romanize()');
192
        return Clean::romanize($str);
193
    }
194
}
195
196
if (!function_exists('utf8_stripspecials')) {
197
    /** @deprecated 2019-06-09 */
198
    function utf8_stripspecials($str, $repl = '', $additional = '')
0 ignored issues
show
It is generally recommended to explicitly declare the visibility for methods.

Adding explicit visibility (private, protected, or public) is generally recommend to communicate to other developers how, and from where this method is intended to be used.

Loading history...
199
    {
200
        dbg_deprecated(Clean::class . '::stripspecials()');
201
        return Clean::stripspecials($str, $repl, $additional);
202
    }
203
}
204
205
if (!function_exists('utf8_strpos')) {
206
    /** @deprecated 2019-06-09 */
207
    function utf8_strpos($haystack, $needle, $offset = 0)
0 ignored issues
show
It is generally recommended to explicitly declare the visibility for methods.

Adding explicit visibility (private, protected, or public) is generally recommend to communicate to other developers how, and from where this method is intended to be used.

Loading history...
208
    {
209
        dbg_deprecated(PhpString::class . '::strpos()');
210
        return PhpString::strpos($haystack, $needle, $offset);
211
    }
212
}
213
214
if (!function_exists('utf8_tohtml')) {
215
    /** @deprecated 2019-06-09 */
216
    function utf8_tohtml($str, $all = false)
0 ignored issues
show
It is generally recommended to explicitly declare the visibility for methods.

Adding explicit visibility (private, protected, or public) is generally recommend to communicate to other developers how, and from where this method is intended to be used.

Loading history...
217
    {
218
        dbg_deprecated(Conversion::class . '::toHtml()');
219
        return Conversion::toHtml($str, $all);
220
    }
221
}
222
223
if (!function_exists('utf8_unhtml')) {
224
    /** @deprecated 2019-06-09 */
225
    function utf8_unhtml($str, $enties = false)
0 ignored issues
show
It is generally recommended to explicitly declare the visibility for methods.

Adding explicit visibility (private, protected, or public) is generally recommend to communicate to other developers how, and from where this method is intended to be used.

Loading history...
226
    {
227
        dbg_deprecated(Conversion::class . '::fromHtml()');
228
        return Conversion::fromHtml($str, $enties);
229
    }
230
}
231
232
if (!function_exists('utf8_to_unicode')) {
233
    /** @deprecated 2019-06-09 */
234
    function utf8_to_unicode($str, $strict = false)
0 ignored issues
show
It is generally recommended to explicitly declare the visibility for methods.

Adding explicit visibility (private, protected, or public) is generally recommend to communicate to other developers how, and from where this method is intended to be used.

Loading history...
235
    {
236
        dbg_deprecated(Unicode::class . '::fromUtf8()');
237
        return Unicode::fromUtf8($str, $strict);
238
    }
239
}
240
241
if (!function_exists('unicode_to_utf8')) {
242
    /** @deprecated 2019-06-09 */
243
    function unicode_to_utf8($arr, $strict = false)
0 ignored issues
show
It is generally recommended to explicitly declare the visibility for methods.

Adding explicit visibility (private, protected, or public) is generally recommend to communicate to other developers how, and from where this method is intended to be used.

Loading history...
244
    {
245
        dbg_deprecated(Unicode::class . '::toUtf8()');
246
        return Unicode::toUtf8($arr, $strict);
247
    }
248
}
249
250
if (!function_exists('utf8_to_utf16be')) {
251
    /** @deprecated 2019-06-09 */
252
    function utf8_to_utf16be($str, $bom = false)
0 ignored issues
show
It is generally recommended to explicitly declare the visibility for methods.

Adding explicit visibility (private, protected, or public) is generally recommend to communicate to other developers how, and from where this method is intended to be used.

Loading history...
253
    {
254
        dbg_deprecated(Conversion::class . '::toUtf16be()');
255
        return Conversion::toUtf16be($str, $bom);
256
    }
257
}
258
259
if (!function_exists('utf16be_to_utf8')) {
260
    /** @deprecated 2019-06-09 */
261
    function utf16be_to_utf8($str)
0 ignored issues
show
It is generally recommended to explicitly declare the visibility for methods.

Adding explicit visibility (private, protected, or public) is generally recommend to communicate to other developers how, and from where this method is intended to be used.

Loading history...
262
    {
263
        dbg_deprecated(Conversion::class . '::fromUtf16be()');
264
        return Conversion::fromUtf16be($str);
265
    }
266
}
267
268
if (!function_exists('utf8_bad_replace')) {
269
    /** @deprecated 2019-06-09 */
270
    function utf8_bad_replace($str, $replace = '')
0 ignored issues
show
It is generally recommended to explicitly declare the visibility for methods.

Adding explicit visibility (private, protected, or public) is generally recommend to communicate to other developers how, and from where this method is intended to be used.

Loading history...
271
    {
272
        dbg_deprecated(Clean::class . '::replaceBadBytes()');
273
        return Clean::replaceBadBytes($str, $replace);
274
    }
275
}
276
277
if (!function_exists('utf8_correctIdx')) {
278
    /** @deprecated 2019-06-09 */
279
    function utf8_correctIdx($str, $i, $next = false)
0 ignored issues
show
It is generally recommended to explicitly declare the visibility for methods.

Adding explicit visibility (private, protected, or public) is generally recommend to communicate to other developers how, and from where this method is intended to be used.

Loading history...
280
    {
281
        dbg_deprecated(Clean::class . '::correctIdx()');
282
        return Clean::correctIdx($str, $i, $next);
283
    }
284
}
285