FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
phpbb3/phpBB/develop/unicode_testing.php at develop · efrick/phpbb3 · GitHub
efrick
/
phpbb3
Public
forked from
phpbb/phpbb
Notifications
You must be signed in to change notification settings
Fork
0
Star
1
Code
Pull requests
0
Actions
Projects
Wiki
Security and quality
0
Insights
Additional navigation options
Code
Pull requests
Actions
Projects
Wiki
Security and quality
Insights
Expand file tree
Breadcrumbs
phpbb3
/
phpBB
/
develop
/
unicode_testing.php
Copy path
More file actions
More file actions
Latest commit
History
History
History
118 lines (109 loc) · 2.67 KB
Breadcrumbs
phpbb3
/
phpBB
/
develop
/
unicode_testing.php
Copy path
File metadata and controls
118 lines (109 loc) · 2.67 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
<?php
//
// This file provides some useful functions for debugging the unicode/UTF-8 library
// It requires utf_tools.php to be loaded
//
die
(
"
Please read the first lines of this script for instructions on how to enable it
"
);
if
(!
headers_sent
())
{
header
(
'
Content-type: text/html; charset=UTF-8
'
);
}
/**
* Converts unicode escape sequences (\u0123) into UTF-8 characters
*
* @param string A unicode sequence
* @return string UTF-8 representation of the given unicode sequence
*/
function
unicode_to_utf8
(
$
string
)
{
$
utf8
=
''
;
$
chars
=
array
();
for
(
$
i
=
0
;
$
i
<
strlen
(
$
string
);
$
i
++)
{
if
(
isset
(
$
string
[
$
i
+
5
]) &&
substr
(
$
string
,
$
i
,
2
) ==
'\\
u
'
&&
ctype_xdigit
(
substr
(
$
string
,
$
i
+
2
,
4
)))
{
$
utf8
.=
utf8_from_unicode
(
array
(
base_convert
(
substr
(
$
string
,
$
i
+
2
,
4
),
16
,
10
)));
$
i
+=
5
;
}
else
{
$
utf8
.=
$
string
[
$
i
];
}
}
return
$
utf8
;
}
/**
* Takes an array of ints representing the Unicode characters and returns
* a UTF-8 string.
*
* @param array $array array of unicode code points representing a string
* @return string UTF-8 character string
*/
function
utf8_from_unicode
(
$
array
)
{
$
str
=
''
;
foreach
(
$
array
as
$
value
)
{
$
str
.=
utf8_chr
(
$
value
);
}
return
$
str
;
}
/**
* Converts a UTF-8 string to unicode code points
*
* @param string $text UTF-8 string
* @return string Unicode code points
*/
function
utf8_to_unicode
(
$
text
)
{
return
preg_replace_callback
(
'
#[
\\
xC2-
\\
xF4][
\\
x80-
\\
xBF]?[
\\
x80-
\\
xBF]?[
\\
x80-
\\
xBF]#
'
,
'
utf8_to_unicode_callback
'
,
preg_replace_callback
(
'
#[
\\
x00-
\\
x7f]#
'
,
'
utf8_to_unicode_callback
'
,
$
text
)
);
}
/**
* Takes a UTF-8 char and replaces it with its unicode escape sequence. Attention, $m is an array
*
* @param array $m 0-based numerically indexed array passed by preg_replace_callback()
* @return string A unicode escape sequence
*/
function
utf8_to_unicode_callback
(
$
m
)
{
return
'
\u
'
.
str_pad
(
base_convert
(
utf8_ord
(
$
m
[
0
]),
10
,
16
),
4
,
'
0
'
,
STR_PAD_LEFT
) .
''
;
}
/**
* A wrapper function for the normalizer which takes care of including the class if required and modifies the passed strings
* to be in NFKC
*
* @param mixed $strings a string or an array of strings to normalize
* @return mixed the normalized content, preserving array keys if array given.
*/
function
utf8_normalize_nfkc
(
$
strings
)
{
if
(
empty
(
$
strings
))
{
return
$
strings
;
}
if
(!
class_exists
(
'
utf_normalizer
'
))
{
global
$
phpbb_root_path
,
$
phpEx
;
include
(
$
phpbb_root_path
.
'
includes/utf/utf_normalizer.
'
.
$
phpEx
);
}
if
(!
is_array
(
$
strings
))
{
utf_normalizer::
nfkc
(
$
strings
);
}
else
if
(
is_array
(
$
strings
))
{
foreach
(
$
strings
as
$
key
=>
$
string
)
{
utf_normalizer::
nfkc
(
$
strings
[
$
key
]);
}
}
return
$
strings
;
}
Back
|
FazBrowse Home
|
New Git URL