Skip to content

Commit 5eb8a7c

Browse files
authored
[11.x] Include all invisible characters in Str::trim (#54281)
* Include all invisible characters in Str::trim * Use constant
1 parent e65c9b7 commit 5eb8a7c

File tree

1 file changed

+10
-3
lines changed

1 file changed

+10
-3
lines changed

src/Illuminate/Support/Str.php

+10-3
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,13 @@ class Str
2323
{
2424
use Macroable;
2525

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+
2633
/**
2734
* The cache of snake-cased words.
2835
*
@@ -1538,7 +1545,7 @@ public static function trim($value, $charlist = null)
15381545
if ($charlist === null) {
15391546
$trimDefaultCharacters = " \n\r\t\v\0";
15401547

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);
15421549
}
15431550

15441551
return trim($value, $charlist);
@@ -1556,7 +1563,7 @@ public static function ltrim($value, $charlist = null)
15561563
if ($charlist === null) {
15571564
$ltrimDefaultCharacters = " \n\r\t\v\0";
15581565

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);
15601567
}
15611568

15621569
return ltrim($value, $charlist);
@@ -1574,7 +1581,7 @@ public static function rtrim($value, $charlist = null)
15741581
if ($charlist === null) {
15751582
$rtrimDefaultCharacters = " \n\r\t\v\0";
15761583

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);
15781585
}
15791586

15801587
return rtrim($value, $charlist);

0 commit comments

Comments
 (0)