Skip to content

Commit ea42959

Browse files
committedDec 9, 2020
update some
1 parent 14e0ad4 commit ea42959

File tree

3 files changed

+137
-130
lines changed

3 files changed

+137
-130
lines changed
 

‎src/Str/StringHelper.php

+5-122
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
use Exception;
1313
use Toolkit\Stdlib\Str\Traits\StringCaseHelperTrait;
1414
use Toolkit\Stdlib\Str\Traits\StringCheckHelperTrait;
15+
use Toolkit\Stdlib\Util\UUID;
1516
use function array_map;
1617
use function array_merge;
1718
use function array_slice;
@@ -24,7 +25,6 @@
2425
use function function_exists;
2526
use function hash;
2627
use function hex2bin;
27-
use function html_entity_decode;
2828
use function implode;
2929
use function in_array;
3030
use function is_int;
@@ -50,7 +50,6 @@
5050
use function uniqid;
5151
use function utf8_decode;
5252
use function utf8_encode;
53-
use const ENT_COMPAT;
5453
use const PREG_SPLIT_NO_EMPTY;
5554
use const STR_PAD_LEFT;
5655
use const STR_PAD_RIGHT;
@@ -101,122 +100,6 @@ public static function padRight($str, $padLen, string $padStr = ' '): string
101100
return $padLen > 0 ? str_pad((string)$str, (int)$padLen, $padStr) : (string)$str;
102101
}
103102

104-
////////////////////////////////////////////////////////////////////////
105-
/// Check Length
106-
////////////////////////////////////////////////////////////////////////
107-
108-
/**
109-
* from Symfony
110-
*
111-
* @param string $string
112-
* @return int
113-
*/
114-
public static function len($string): int
115-
{
116-
$string = (string)$string;
117-
if (false === $encoding = mb_detect_encoding($string, null, true)) {
118-
return strlen($string);
119-
}
120-
121-
return mb_strwidth($string, $encoding);
122-
}
123-
124-
/**
125-
* @param string $str
126-
* @param string $encoding
127-
*
128-
* @return int
129-
*/
130-
public static function len2($str, string $encoding = 'UTF-8'): int
131-
{
132-
$str = (string)$str;
133-
134-
return function_exists('mb_strlen') ? mb_strlen($str, $encoding) : strlen($str);
135-
}
136-
137-
/**
138-
* @param string $str
139-
* @param string $encoding
140-
*
141-
* @return int
142-
*/
143-
public static function strlen($str, string $encoding = 'UTF-8'): int
144-
{
145-
$str = html_entity_decode((string)$str, ENT_COMPAT, 'UTF-8');
146-
147-
return function_exists('mb_strlen') ? mb_strlen($str, $encoding) : strlen($str);
148-
}
149-
150-
/**
151-
* @param string $string
152-
* @return int
153-
*/
154-
public static function utf8Len($string): int
155-
{
156-
// strlen: one chinese is 3 char.
157-
// mb_strlen: one chinese is 1 char.
158-
// mb_strwidth: one chinese is 2 char.
159-
return mb_strlen((string)$string, 'utf-8');
160-
}
161-
162-
/**
163-
* @param string $string
164-
* @return int
165-
*/
166-
public static function utf8width($string): int
167-
{
168-
// strlen: one chinese is 3 char.
169-
// mb_strlen: one chinese is 1 char.
170-
// mb_strwidth: one chinese is 2 char.
171-
return mb_strwidth((string)$string, 'utf-8');
172-
}
173-
174-
/**
175-
* 计算字符长度
176-
* @param string $str
177-
* @return int
178-
*/
179-
public static function length(string $str): int
180-
{
181-
if ($str === '') {
182-
return 0;
183-
}
184-
185-
if (function_exists('mb_strlen')) {
186-
return mb_strlen($str, 'utf-8');
187-
}
188-
189-
preg_match_all('/./u', $str, $arr);
190-
191-
return count($arr[0]);
192-
}
193-
194-
/**
195-
* @from web
196-
* 可以统计中文字符串长度的函数
197-
* @param string $str 要计算长度的字符串
198-
* @internal param bool $type 计算长度类型,0(默认)表示一个中文算一个字符,1表示一个中文算两个字符
199-
* @return int
200-
*/
201-
public static function absLen(string $str): int
202-
{
203-
if (empty($str)) {
204-
return 0;
205-
}
206-
207-
if (function_exists('mb_strwidth')) {
208-
return mb_strwidth($str, 'utf-8');
209-
}
210-
211-
if (function_exists('mb_strlen')) {
212-
return mb_strlen($str, 'utf-8');
213-
}
214-
215-
preg_match_all('/./u', $str, $ar);
216-
217-
return count($ar[0]);
218-
}
219-
220103
////////////////////////////////////////////////////////////
221104
/// Security
222105
////////////////////////////////////////////////////////////
@@ -283,10 +166,10 @@ public static function genUid(int $length = 7): string
283166
* @param null $ns
284167
* @return UUID
285168
*/
286-
// public static function genUUID($version = 1, $node = null, $ns = null)
287-
// {
288-
// return UUID::generate($version, $node, $ns);
289-
// }
169+
public static function genUUID($version = 1, $node = null, $ns = null)
170+
{
171+
return UUID::generate($version, $node, $ns);
172+
}
290173

291174
////////////////////////////////////////////////////////////////////////
292175
/// Convert to array

‎src/Str/Traits/StringLengthHelperTrait.php

+132
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,143 @@
99

1010
namespace Toolkit\Stdlib\Str\Traits;
1111

12+
use function count;
13+
use function function_exists;
14+
use function html_entity_decode;
15+
use function mb_detect_encoding;
16+
use function mb_strlen;
17+
use function mb_strwidth;
18+
use function preg_match_all;
19+
use function strlen;
20+
use const ENT_COMPAT;
21+
1222
/**
1323
* Trait StringLengthHelperTrait
1424
*
1525
* @package Toolkit\Stdlib\Str\Traits
1626
*/
1727
trait StringLengthHelperTrait
1828
{
29+
////////////////////////////////////////////////////////////////////////
30+
/// Check Length
31+
////////////////////////////////////////////////////////////////////////
32+
33+
/**
34+
* from Symfony
35+
*
36+
* @param string $string
37+
*
38+
* @return int
39+
*/
40+
public static function len($string): int
41+
{
42+
$string = (string)$string;
43+
if (false === $encoding = mb_detect_encoding($string, null, true)) {
44+
return strlen($string);
45+
}
46+
47+
return mb_strwidth($string, $encoding);
48+
}
49+
50+
/**
51+
* @param string $str
52+
* @param string $encoding
53+
*
54+
* @return int
55+
*/
56+
public static function len2($str, string $encoding = 'UTF-8'): int
57+
{
58+
$str = (string)$str;
59+
60+
return function_exists('mb_strlen') ? mb_strlen($str, $encoding) : strlen($str);
61+
}
62+
63+
/**
64+
* @param string $str
65+
* @param string $encoding
66+
*
67+
* @return int
68+
*/
69+
public static function strlen($str, string $encoding = 'UTF-8'): int
70+
{
71+
$str = html_entity_decode((string)$str, ENT_COMPAT, 'UTF-8');
72+
73+
return function_exists('mb_strlen') ? mb_strlen($str, $encoding) : strlen($str);
74+
}
75+
76+
/**
77+
* @param string $string
78+
*
79+
* @return int
80+
*/
81+
public static function utf8Len($string): int
82+
{
83+
// strlen: one chinese is 3 char.
84+
// mb_strlen: one chinese is 1 char.
85+
// mb_strwidth: one chinese is 2 char.
86+
return mb_strlen((string)$string, 'utf-8');
87+
}
88+
89+
/**
90+
* @param string $string
91+
*
92+
* @return int
93+
*/
94+
public static function utf8width($string): int
95+
{
96+
// strlen: one chinese is 3 char.
97+
// mb_strlen: one chinese is 1 char.
98+
// mb_strwidth: one chinese is 2 char.
99+
return mb_strwidth((string)$string, 'utf-8');
100+
}
101+
102+
/**
103+
* 计算字符长度
104+
*
105+
* @param string $str
106+
*
107+
* @return int
108+
*/
109+
public static function length(string $str): int
110+
{
111+
if ($str === '') {
112+
return 0;
113+
}
114+
115+
if (function_exists('mb_strlen')) {
116+
return mb_strlen($str, 'utf-8');
117+
}
118+
119+
preg_match_all('/./u', $str, $arr);
120+
121+
return count($arr[0]);
122+
}
123+
124+
/**
125+
* @from web
126+
* 可以统计中文字符串长度的函数
127+
*
128+
* @param string $str 要计算长度的字符串
129+
*
130+
* @return int
131+
* @internal param bool $type 计算长度类型,0(默认)表示一个中文算一个字符,1表示一个中文算两个字符
132+
*/
133+
public static function absLen(string $str): int
134+
{
135+
if (empty($str)) {
136+
return 0;
137+
}
138+
139+
if (function_exists('mb_strwidth')) {
140+
return mb_strwidth($str, 'utf-8');
141+
}
142+
143+
if (function_exists('mb_strlen')) {
144+
return mb_strlen($str, 'utf-8');
145+
}
146+
147+
preg_match_all('/./u', $str, $ar);
148+
149+
return count($ar[0]);
150+
}
19151
}

‎src/Util/UUID.php

-8
Original file line numberDiff line numberDiff line change
@@ -397,20 +397,16 @@ public function __get(string $var)
397397
switch ($var) {
398398
case 'bytes':
399399
return $this->bytes;
400-
break;
401400
case 'hex':
402401
return bin2hex($this->bytes);
403-
break;
404402
case 'node':
405403
if (ord($this->bytes[6]) >> 4 === 1) {
406404
return bin2hex(substr($this->bytes, 10));
407405
}
408406

409407
return null;
410-
break;
411408
case 'string':
412409
return $this->__toString();
413-
break;
414410
case 'time':
415411
if (ord($this->bytes[6]) >> 4 === 1) {
416412
// Restore contiguous big-endian byte order
@@ -426,7 +422,6 @@ public function __get(string $var)
426422
break;
427423
case 'urn':
428424
return 'urn:uuid:' . $this->__toString();
429-
break;
430425
case 'variant':
431426
$byte = ord($this->bytes[8]);
432427
if ($byte >= static::VAR_RES) {
@@ -442,13 +437,10 @@ public function __get(string $var)
442437
}
443438

444439
return 0;
445-
break;
446440
case 'version':
447441
return ord($this->bytes[6]) >> 4;
448-
break;
449442
default:
450443
return null;
451-
break;
452444
}
453445

454446
return null;

0 commit comments

Comments
 (0)
Please sign in to comment.