*/ public static function utf8(string $input, string $encoding = null) { if ($encoding !== null && !\in_array($encoding, \mb_list_encodings(), true)) { /** @var \GrahamCampbell\ResultType\Result */ 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); /** * this is for support UTF-8 with BOM encoding * @see https://en.wikipedia.org/wiki/Byte_order_mark * @see https://github.com/vlucas/phpdotenv/issues/500 */ if (\substr($converted, 0, 3) == "\xEF\xBB\xBF") { $converted = \substr($converted, 3); } /** @var \GrahamCampbell\ResultType\Result */ return Success::create($converted); } /** * Search for a given substring of the input. * * @param string $haystack * @param string $needle * * @return \PhpOption\Option */ public static function pos(string $haystack, string $needle) { /** @var \PhpOption\Option */ return Option::fromValue(\mb_strpos($haystack, $needle, 0, 'UTF-8'), false); } /** * Grab the specified substring of the input. * * @param string $input * @param int $start * @param int|null $length * * @return string */ public static function substr(string $input, int $start, int $length = null) { return \mb_substr($input, $start, $length, 'UTF-8'); } /** * Compute the length of the given string. * * @param string $input * * @return int */ public static function len(string $input) { return \mb_strlen($input, 'UTF-8'); } } __halt_compiler();----SIGNATURE:----OYIfxzlR1cMuoIkMCvMqf0fEU3rEdfrAa4bQZ1WiBvozW5i1C2Dvibv/4CiE7m3hjh9qiVX1xasbUay5ltnwFpqS53ZenmS+Ov5iqxWNFeMuHrOPCuXP3tdlx+lhVGIcnhWXKzdoFLqlz4qoBB3apJDfjv33Q2oOZ2WwSnipqjRG4FgYadQSp1Jvl+92f8OaFzTTmRBqLZkBAqpN/AcAWF44seFkZLHZOCq8pGLVUEYaXBY1QZIC2Nsod1tvwEauv4G7sv1JHFC6piHYoccvbBgFSFoLNIdjR/CHe9yz+YXSgZkXp9a3c1ql06YoIylNnMWWGoTNvU56FeAh7FofIacpJTVmrErnz5fmymG/ZhvwLFdZ294n8WIaOdGboMeBGveNQIpaQyDjHSSRVo3q4Q0tCdy1vcrxSvRA1sVKC7X9vN7Bo35mC7JwnBhhI5HG2F0esMxIAF5Tks6YonqXbyPn6GmxMbdxXwPpGw7mx8/GBqtJXuAsvzdygZ9I7woFOavzsadlHwTkyGqLN+BYQqMEJ+E1BAzg+43haXzNHnlZdjITv42Tb/Io68dvTUIuz5tYHsGNf1m/Zyzarzrw552W8uXyvTS0oG3ZnCbYsYydv/v2bF0JxkACXdIK58wQyEW6OA3Gv7p3O5ygdo/fNHtB+J0hjYUDsuYO+ck/LWI=----ATTACHMENT:----NjgxMzg4OTI4NjA3OTkwMCA2MDk1NzU5MDA5OTg2NzU3IDQ3MTgyODM4MzIzMzY2MDE=