@@ -23,6 +23,13 @@ class Str
23
23
{
24
24
use Macroable;
25
25
26
+ /**
27
+ * The list of characters that are considered "invisible" in strings.
28
+ *
29
+ * @var string
30
+ */
31
+ const INVISIBLE_CHARACTERS = '\x{0009}\x{0020}\x{00A0}\x{00AD}\x{034F}\x{061C}\x{115F}\x{1160}\x{17B4}\x{17B5}\x{180E}\x{2000}\x{2001}\x{2002}\x{2003}\x{2004}\x{2005}\x{2006}\x{2007}\x{2008}\x{2009}\x{200A}\x{200B}\x{200C}\x{200D}\x{200E}\x{200F}\x{202F}\x{205F}\x{2060}\x{2061}\x{2062}\x{2063}\x{2064}\x{2065}\x{206A}\x{206B}\x{206C}\x{206D}\x{206E}\x{206F}\x{3000}\x{2800}\x{3164}\x{FEFF}\x{FFA0}\x{1D159}\x{1D173}\x{1D174}\x{1D175}\x{1D176}\x{1D177}\x{1D178}\x{1D179}\x{1D17A}\x{E0020} ' ;
32
+
26
33
/**
27
34
* The cache of snake-cased words.
28
35
*
@@ -1538,7 +1545,7 @@ public static function trim($value, $charlist = null)
1538
1545
if ($ charlist === null ) {
1539
1546
$ trimDefaultCharacters = " \n\r\t\v\0" ;
1540
1547
1541
- return preg_replace ('~^[\s\x{FEFF}\x{200B}\x{200E} ' . $ trimDefaultCharacters .']+|[\s\x{FEFF}\x{200B}\x{200E} ' .$ trimDefaultCharacters .']+$~u ' , '' , $ value ) ?? trim ($ value );
1548
+ return preg_replace ('~^[\s ' . self :: INVISIBLE_CHARACTERS . $ trimDefaultCharacters .']+|[\s ' . self :: INVISIBLE_CHARACTERS .$ trimDefaultCharacters .']+$~u ' , '' , $ value ) ?? trim ($ value );
1542
1549
}
1543
1550
1544
1551
return trim ($ value , $ charlist );
@@ -1556,7 +1563,7 @@ public static function ltrim($value, $charlist = null)
1556
1563
if ($ charlist === null ) {
1557
1564
$ ltrimDefaultCharacters = " \n\r\t\v\0" ;
1558
1565
1559
- return preg_replace ('~^[\s\x{FEFF}\x{200B}\x{200E} ' .$ ltrimDefaultCharacters .']+~u ' , '' , $ value ) ?? ltrim ($ value );
1566
+ return preg_replace ('~^[\s ' . self :: INVISIBLE_CHARACTERS .$ ltrimDefaultCharacters .']+~u ' , '' , $ value ) ?? ltrim ($ value );
1560
1567
}
1561
1568
1562
1569
return ltrim ($ value , $ charlist );
@@ -1574,7 +1581,7 @@ public static function rtrim($value, $charlist = null)
1574
1581
if ($ charlist === null ) {
1575
1582
$ rtrimDefaultCharacters = " \n\r\t\v\0" ;
1576
1583
1577
- return preg_replace ('~[\s\x{FEFF}\x{200B}\x{200E} ' .$ rtrimDefaultCharacters .']+$~u ' , '' , $ value ) ?? rtrim ($ value );
1584
+ return preg_replace ('~[\s ' . self :: INVISIBLE_CHARACTERS .$ rtrimDefaultCharacters .']+$~u ' , '' , $ value ) ?? rtrim ($ value );
1578
1585
}
1579
1586
1580
1587
return rtrim ($ value , $ charlist );
0 commit comments