This commit is contained in:
2025-05-12 14:25:25 +02:00
parent ab2db755ef
commit 9e378ca2b7
2719 changed files with 46505 additions and 60181 deletions

View File

@@ -31,19 +31,28 @@ final class Str
* @param string $input
* @param string|null $encoding
*
* @return \GrahamCampbell\ResultType\Result<string,string>
* @return \GrahamCampbell\ResultType\Result<string, string>
*/
public static function utf8(string $input, string $encoding = null)
public static function utf8(string $input, ?string $encoding = null)
{
if ($encoding !== null && !\in_array($encoding, \mb_list_encodings(), true)) {
/** @var \GrahamCampbell\ResultType\Result<string,string> */
/** @var \GrahamCampbell\ResultType\Result<string, string> */
return Error::create(
\sprintf('Illegal character encoding [%s] specified.', $encoding)
);
}
$converted = $encoding === null ?
@\mb_convert_encoding($input, 'UTF-8') :
@\mb_convert_encoding($input, 'UTF-8', $encoding);
if (!is_string($converted)) {
/** @var \GrahamCampbell\ResultType\Result<string, string> */
return Error::create(
\sprintf('Conversion from encoding [%s] failed.', $encoding ?? 'NULL')
);
}
/**
* this is for support UTF-8 with BOM encoding
* @see https://en.wikipedia.org/wiki/Byte_order_mark
@@ -52,7 +61,8 @@ final class Str
if (\substr($converted, 0, 3) == "\xEF\xBB\xBF") {
$converted = \substr($converted, 3);
}
/** @var \GrahamCampbell\ResultType\Result<string,string> */
/** @var \GrahamCampbell\ResultType\Result<string, string> */
return Success::create($converted);
}
@@ -79,7 +89,7 @@ final class Str
*
* @return string
*/
public static function substr(string $input, int $start, int $length = null)
public static function substr(string $input, int $start, ?int $length = null)
{
return \mb_substr($input, $start, $length, 'UTF-8');
}