Supported Versions: PHP 4, PHP 5, PHP 7, PHP 8
Get string length
<?php strlen(string $string): int
<?php         foreach ($packageMap as $item) {

            list($package, $installPath) = $item;



            if (null !== $package->getTargetDir() && strlen($package->getTargetDir()) > 0) {

                $installPath = substr($installPath, 0, -strlen('/'.$package->getTargetDir()));

            }
<?php             list($package, $installPath) = $item;



            if (null !== $package->getTargetDir() && strlen($package->getTargetDir()) > 0) {

                $installPath = substr($installPath, 0, -strlen('/'.$package->getTargetDir()));

            }



            foreach ($package->getIncludePaths() as $includePath) {
<?php         $baseDir = '';

        if (strpos($path.'/', $vendorPath.'/') === 0) {

            $path = substr($path, strlen($vendorPath));

            $baseDir = '$vendorDir';



            if ($path !== false) {
<?php     protected function getAutoloadFile($vendorPathToTargetDirCode, $suffix)

    {

        $lastChar = $vendorPathToTargetDirCode[strlen($vendorPathToTargetDirCode) - 1];

        if ("'" === $lastChar || '"' === $lastChar) {

            $vendorPathToTargetDirCode = substr($vendorPathToTargetDirCode, 0, -1).'/autoload_real.php'.$lastChar;

        } else {
<?php         $initializer = '';

        $prefix = "\0Composer\Autoload\ClassLoader\0";

        $prefixLen = strlen($prefix);

        if (file_exists($targetDir . '/autoload_files.php')) {

            $maps = array('files' => require $targetDir . '/autoload_files.php');

        } else {
<?php                 continue;

            }

            if (null !== $package->getTargetDir() && $package !== $rootPackage) {

                $installPath = substr($installPath, 0, -strlen('/'.$package->getTargetDir()));

            }



            foreach ($autoload[$type] as $namespace => $paths) {
<?php             }

        } elseif (!isset($this->prefixDirsPsr4[$prefix])) {


            $length = strlen($prefix);

            if ('\\' !== $prefix[$length - 1]) {

                throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");

            }
<?php         if (!$prefix) {

            $this->fallbackDirsPsr4 = (array) $paths;

        } else {

            $length = strlen($prefix);

            if ('\\' !== $prefix[$length - 1]) {

                throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");

            }
<?php         $validClasses = array();

        $rejectedClasses = array();



        $realSubPath = substr($filePath, strlen($basePath) + 1);

        $dotPosition = strrpos($realSubPath, '.');

        $realSubPath = substr($realSubPath, 0, $dotPosition === false ? PHP_INT_MAX : $dotPosition);
<?php                     $subPath = str_replace('_', DIRECTORY_SEPARATOR, $class);

                }

            } elseif ('psr-4' === $namespaceType) {

                $subNamespace = ('' !== $baseNamespace) ? substr($class, strlen($baseNamespace)) : $class;

                $subPath = str_replace('\\', DIRECTORY_SEPARATOR, $subNamespace);

            } else {

                throw new \RuntimeException("namespaceType must be psr-0 or psr-4, $namespaceType given");
<?php         foreach ($types as $type) {

            self::$typeConfig[$type[0]] = array(

                'name' => $type,

                'length' => \strlen($type),

                'pattern' => '{.\b(?<![\$:>])'.$type.'\s++[a-zA-Z_\x7f-\xff:][a-zA-Z0-9_\x7f-\xff:\-]*+}Ais',

            );

        }
<?php     public function __construct($contents, $maxMatches)

    {

        $this->contents = $contents;

        $this->len = \strlen($this->contents);

        $this->maxMatches = $maxMatches;

    }
<?php                 }



                if ($char === "<" && $this->peek('<') && $this->match('{<<<[ \t]*+([\'"]?)([a-zA-Z_\x80-\xff][a-zA-Z0-9_\x80-\xff]*+)\\1(?:\r\n|\n|\r)}A', $match)) {

                    $this->index += \strlen($match[0]);

                    $this->skipHeredoc($match[2]);

                    $clean .= 'null';

                    continue;
<?php                 $this->index += 1;

                if ($this->match(self::$restPattern, $match)) {

                    $clean .= $char . $match[0];

                    $this->index += \strlen($match[0]);

                } else {

                    $clean .= $char;

                }
<?php     private function skipHeredoc($delimiter)

    {

        $firstDelimiterChar = $delimiter[0];

        $delimiterLength = \strlen($delimiter);

        $delimiterPattern = '{'.preg_quote($delimiter).'(?![a-zA-Z0-9_\x80-\xff])}A';



        while ($this->index < $this->len) {