PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 12.6.4
Jetpack – WP Security, Backup, Speed, & Growth v12.6.4
12.0.3 12.1.3 12.2.3 12.3.2 12.4.2 12.5.2 12.6.4 12.7.3 12.8.3 12.9.5 13.0.2 13.1.5 13.2.4 13.3.3 13.4.5 13.5.2 13.6.2 13.7.2 13.8.3 13.9.2 14.0.1 14.1.1 14.2.2 14.3.1 14.4.2 14.5.1 14.6.1 14.7.1 14.8.1 14.9.2 15.0.3 15.1.2 15.2.1 15.3.2 15.4.1 15.5.1 15.6.1 15.7.2 15.8.1 15.9.2 16.0.2 16.1.3 16.2-a.5 16.2-a.3 16.1.2 16.2-a.1 16.1.1 16.1 16.1-beta 16.1-beta.2 16.1-beta.3 16.1-a.5 16.1-a.3 16.0.1 16.1-a.1 16.0 16.0-beta 16.0-a.7 16.0-a.5 15.9.1 16.0-a.3 16.0-a.1 15.9 15.9-beta 15.9-a.7 15.9-a.5 15.9-a.3 15.9-a.1 15.8 15.8-beta 15.8-a.7 15.8-a.5 5.2.5 5.3.4 5.4.4 5.5.5 5.6.5 5.7.5 5.8.4 5.9.4 6.0.4 6.1 6.1.1 6.1.2 6.1.3 6.1.4 6.1.5 6.2 6.2.1 6.2.2 6.2.3 6.2.4 6.2.5 6.3 6.3.1 6.3.2 6.3.3 6.3.4 6.3.5 6.3.6 6.3.7 6.4 6.4.1 6.4.2 6.4.3 6.4.4 6.4.5 6.4.6 6.5 6.5.1 6.5.2 6.5.3 6.5.4 6.6 6.6.1 6.6.2 6.6.3 6.6.4 6.6.5 6.7 6.7.1 6.7.2 6.7.3 6.7.4 6.8 6.8.1 6.8.2 6.8.3 6.8.4 6.8.5 6.9 6.9.1 6.9.2 6.9.3 6.9.4 7.0 7.0.1 7.0.2 7.0.3 7.0.4 7.0.5 7.1 7.1.1 7.1.2 7.1.3 7.1.4 7.1.5 7.2 7.2.1 7.2.1.1 7.2.2 7.2.3 7.2.4 7.2.5 7.3 7.3.0.1 7.3.1 7.3.1.1 7.3.2 7.3.3 7.3.4 7.3.5 7.4 7.4.1 7.4.2 7.4.3 7.4.4 7.4.5 7.5 7.5.0.1 7.5.1 7.5.2 7.5.3 7.5.4 7.5.5 7.5.6 7.5.7 7.6 7.6.1 7.6.2 7.6.3 7.6.4 7.7 7.7.1 7.7.2 7.7.3 7.7.4 7.7.5 7.7.6 7.8 7.8.1 7.8.2 7.8.3 7.8.4 7.9 7.9.1 7.9.2 7.9.3 7.9.4 8.0 8.0.1 8.0.2 8.0.3 8.1 8.1.1 8.1.2 8.1.3 8.1.4 8.2 8.2.0.1 8.2.1 8.2.2 8.2.3 8.2.4 8.2.5 8.2.6 8.3 8.3.1 8.3.2 8.3.3 8.4 8.4.1 8.4.2 8.4.3 8.4.4 8.4.5 8.5 8.5.1 8.5.2 8.5.3 8.6 8.6.1 8.6.2 8.6.3 8.6.4 8.7 8.7.0.1 8.7.1 8.7.2 8.7.3 8.7.4 8.8 8.8.1 8.8.2 8.8.3 8.8.4 8.8.5 8.9 8.9.1 8.9.2 8.9.3 8.9.4 9.0 9.0.1 9.0.2 9.0.3 9.0.4 9.0.5 9.1 9.1.1 9.1.2 9.1.3 9.2 9.2.1 9.2.2 9.2.3 9.2.4 9.3 9.3.1 9.3.2 9.3.3 9.3.4 9.3.5 9.4 9.4.1 9.4.2 9.4.3 9.4.4 9.5 9.5.1 9.5.2 9.5.3 9.5.4 9.5.5 9.6 9.6.1 9.6.2 9.6.3 9.6.4 9.7 9.7.1 9.7.2 15.7-beta.2 9.7.3 15.7.1 9.8 15.8-a.1 9.8.1 15.8-a.3 9.8.2 2.0.9 9.8.3 2.1.7 9.9 2.2.10 9.9.1 2.3.10 9.9.2 2.4.7 9.9.3 2.5.5 2.6.6 2.7.5 2.8.5 2.9.6 3.0.6 3.1.5 3.2.5 3.3.6 3.4.6 3.5.6 3.6.4 3.7.5 3.8.5 3.9.10 4.0.7 4.1.4 4.2.5 4.3.5 4.4.5 4.5.3 4.6.3 4.7.4 4.8.5 4.9.3 5.0.3 5.1.4 trunk 10.0 10.0.1 10.0.2 10.1 10.1.1 10.1.2 10.2 10.2.1 10.2.2 10.2.3 10.3 10.3.1 10.3.2 10.4 10.4.1 10.4.2 10.5 10.5.1 10.5.2 10.5.3 10.6 10.6.1 10.6.2 10.7 10.7.1 10.7.2 10.8 10.8.1 10.8.2 10.9 10.9.1 10.9.2 10.9.3 11.0 11.0.1 11.0.2 11.1 11.1.1 11.1.2 11.1.3 11.1.4 11.2 11.2.1 11.2.2 11.3 11.3.1 11.3.2 11.3.3 11.3.4 11.4 11.4.1 11.4.2 11.5 11.5.1 11.5.2 11.5.3 11.6 11.6.1 11.6.2 11.7 11.7.1 11.7.2 11.7.3 11.8 11.8.3 11.8.4 11.8.5 11.8.6 11.9 11.9.1 11.9.2 11.9.3 12.0 12.0.1 12.0.2 12.1 12.1.1 12.1.2 12.2 12.2.1 12.2.2 12.3 12.3.1 12.4 12.4.1 12.5 12.5.1 12.6 12.6.1 12.6.2 12.6.3 12.7 12.7.1 12.7.2 12.8 12.8.1 12.8.2 12.9 12.9.1 12.9.2 12.9.3 12.9.4 13.0 13.0.1 13.1 13.1.1 13.1.2 13.1.3 13.1.4 13.2 13.2.1 13.2.2 13.2.3 13.3 13.3.1 13.3.2 13.4 13.4.1 13.4.2 13.4.3 13.4.4 13.5 13.5.1 13.6 13.6.1 13.7 13.7.1 13.8 13.8.1 13.8.2 13.9 13.9.1 14.0 14.1 14.2 14.2.1 14.3 14.4 14.4.1 14.5 14.6 14.7 14.8 14.9 14.9.1 15.0 15.0.1 15.0.2 15.1 15.1.1 15.2 15.3 15.3.1 15.4 15.5 15.6 15.7 15.7-a.1 15.7-a.3 15.7-a.5 15.7-a.7 15.7-beta
jetpack / vendor / nojimage / twitter-text-php / lib / Twitter / Text / StringUtils.php
jetpack / vendor / nojimage / twitter-text-php / lib / Twitter / Text Last commit date
Autolink.php 5 years ago Configuration.php 5 years ago EmojiRegex.php 5 years ago Extractor.php 5 years ago HitHighlighter.php 5 years ago ParseResults.php 5 years ago Parser.php 5 years ago Regex.php 5 years ago StringUtils.php 5 years ago TldLists.php 5 years ago Validator.php 5 years ago
StringUtils.php
192 lines
1 <?php
2
3 /**
4 * @author Takashi Nojima
5 * @copyright Copyright 2014, Takashi Nojima
6 * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License v2.0
7 * @package Twitter.Text
8 */
9
10 namespace Twitter\Text;
11
12 /**
13 * String utility
14 *
15 * @author Takashi Nojima
16 * @copyright Copyright 2014, Takashi Nojima
17 * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License v2.0
18 * @package Twitter
19 */
20 class StringUtils
21 {
22
23 /**
24 * alias of mb_substr
25 *
26 * @param string $str
27 * @param integer $start (character)
28 * @param integer $length (character)
29 * @param string $encoding
30 * @return string
31 */
32 public static function substr($str, $start, $length = null, $encoding = 'UTF-8')
33 {
34 if ($length === null) {
35 // for PHP <= 5.4.7
36 $length = mb_strlen($str, $encoding);
37 }
38 return mb_substr($str, $start, $length, $encoding);
39 }
40
41 /**
42 * alias of mb_strlen
43 *
44 * @param string $str
45 * @param string $encoding
46 * @return integer
47 */
48 public static function strlen($str, $encoding = 'UTF-8')
49 {
50 return mb_strlen($str, $encoding);
51 }
52
53 /**
54 * alias of mb_strpos
55 *
56 * @param string $haystack
57 * @param string $needle
58 * @param integer $offset
59 * @param string $encoding
60 * @return integer
61 */
62 public static function strpos($haystack, $needle, $offset = 0, $encoding = 'UTF-8')
63 {
64 return mb_strpos($haystack, $needle, $offset, $encoding);
65 }
66
67 /**
68 * A multibyte-aware substring replacement function.
69 *
70 * @param string $string The string to modify.
71 * @param string $replacement The replacement string.
72 * @param int $start The start of the replacement.
73 * @param int $length The number of characters to replace.
74 * @param string $encoding The encoding of the string.
75 *
76 * @return string The modified string.
77 *
78 * @see http://www.php.net/manual/en/function.substr-replace.php#90146
79 */
80 public static function substrReplace($string, $replacement, $start, $length = null, $encoding = 'UTF-8')
81 {
82 $string_length = static::strlen($string, $encoding);
83 if ($start < 0) {
84 $start = max(0, $string_length + $start);
85 } elseif ($start > $string_length) {
86 $start = $string_length;
87 }
88 if ($length < 0) {
89 $length = max(0, $string_length - $start + $length);
90 } elseif (($length === null) || ($length > $string_length)) {
91 $length = $string_length;
92 }
93 if (($start + $length) > $string_length) {
94 $length = $string_length - $start;
95 }
96
97 $suffixOffset = $start + $length;
98 $suffixLength = $string_length - $start - $length;
99
100 return static::substr($string, 0, $start, $encoding)
101 . $replacement
102 . static::substr($string, $suffixOffset, $suffixLength, $encoding);
103 }
104
105 /**
106 * idn_to_ascii wrapper
107 *
108 * @param string $domain as utf8
109 * @return string
110 */
111 public static function idnToAscii($domain)
112 {
113 // INTL_IDNA_VARIANT_UTS46 defined PHP 5.4.0 or later
114 if (defined('INTL_IDNA_VARIANT_UTS46')) {
115 return idn_to_ascii($domain, IDNA_ALLOW_UNASSIGNED, INTL_IDNA_VARIANT_UTS46);
116 }
117
118 return idn_to_ascii($domain, IDNA_ALLOW_UNASSIGNED);
119 }
120
121 /**
122 * normalize text from NFC
123 *
124 * @param string $text
125 * @return string
126 */
127 public static function normalizeFromNFC($text)
128 {
129 return normalizer_normalize($text);
130 }
131
132 /**
133 * get code point
134 *
135 * @param string $char
136 * @param string $encoding
137 * @return int
138 */
139 public static function ord($char, $encoding = 'UTF-8')
140 {
141 if (mb_strlen($char, $encoding) > 1) {
142 $char = mb_substr($char, 0, 1, $encoding);
143 }
144
145 return current(unpack('N', mb_convert_encoding($char, 'UCS-4BE', $encoding)));
146 }
147
148 /**
149 * get code point at
150 *
151 * @param string $str
152 * @param int $offset
153 * @param string $encoding
154 * @return int
155 */
156 public static function codePointAt($str, $offset, $encoding = 'UTF-8')
157 {
158 return static::ord(mb_substr($str, $offset, 1, $encoding), $encoding);
159 }
160
161 /**
162 * is surrogate pair char
163 *
164 * @param string $char
165 * @return bool
166 */
167 public static function isSurrogatePair($char)
168 {
169 return preg_match('/[\\x{10000}-\\x{10FFFF}]/u', $char);
170 }
171
172 /**
173 * get the character code count
174 *
175 * @param $string
176 * @param string $encoding
177 * @return int
178 */
179 public static function charCount($string, $encoding = 'UTF-8')
180 {
181 $count = 0;
182 $strlen = static::strlen($string);
183
184 for ($offset = 0; $offset < $strlen; $offset++) {
185 $char = static::substr($string, $offset, 1, $encoding);
186 $count += static::isSurrogatePair($char) ? 2 : 1;
187 }
188
189 return $count;
190 }
191 }
192