Supported Versions: PHP 4, PHP 5, PHP 7, PHP 8
Get string length
strlen(string $string): int
            return;

        } finally {

            if (
$i strrpos($this->value'\\')) {

                
$this->attr['ellipsis'] = \strlen($this->value) - $i;

                
$this->attr['ellipsis-type'] = 'class';

                
$this->attr['ellipsis-tail'] = 1;

            }
            case 'string':

                
$this->type self::TYPE_STRING;

                
$this->class preg_match('//u'$value) ? self::STRING_UTF8 self::STRING_BINARY;

                
$this->cut self::STRING_BINARY === $this->class \strlen($value) : mb_strlen($value'UTF-8');

                
$this->value '';

                break;

        }
    private static function formatSeconds(string $sstring $us): string

    
{

        return 
sprintf('%02d.%s'$s=== ($len \strlen($t rtrim($us'0'))) ? '0' : ($len <= str_pad($t3'0') : $us));

    }

}
                $a[$prefix.'src'] = self::$framesCache[$cacheKey];

            } else {

                if (
preg_match('/\((\d+)\)(?:\([\da-f]{32}\))? : (?:eval\(\)\'d code|runtime-created function)$/'$f['file'], $match)) {

                    
$f['file'] = substr($f['file'], 0, -\strlen($match[0]));

                    
$f['line'] = (int) $match[1];

                }

                
$src $f['line'];
                        if (isset($f['object'])) {

                            
$template $f['object'];

                        } elseif ((new 
\ReflectionClass($f['class']))->isInstantiable()) {

                            
$template unserialize(sprintf('O:%d:"%s":0:{}'\strlen($f['class']), $f['class']));

                        }

                        if (
null !== $template) {

                            
$ellipsis 0;
                        $src self::extractSource(file_get_contents($f['file']), $f['line'], self::$srcContext'php'$f['file'], $f);

                        
$srcKey .= ':'.$f['line'];

                        if (
$ellipsis) {

                            
$ellipsis += \strlen($f['line']);

                        }

                    }

                    
$srcAttr .= sprintf('&separator= &file=%s&line=%d'rawurlencode($f['file']), $f['line']);
    public static function castImage(ImageInterface $c, array $aStub $stubbool $isNested): array

    {

        
$imgData $c->get('png');

        if (
\strlen($imgData) > 1000 1000) {

            
$a += [

                
Caster::PREFIX_VIRTUAL.'image' => new ConstStub($c->getSize()),

            ];
            return;

        }

        if (
$composerRoot $this->getComposerRoot($href$this->inVendor)) {

            
$this->attr['ellipsis'] = \strlen($href) - \strlen($composerRoot) + 1;

            
$this->attr['ellipsis-type'] = 'path';

            
$this->attr['ellipsis-tail'] = + ($this->inVendor \strlen(implode(''\array_slice(explode(\DIRECTORY_SEPARATORsubstr($href$this->attr['ellipsis'])), 02))) : 0);

        } elseif (
\count($ellipsis explode(\DIRECTORY_SEPARATOR$href))) {
        if ($composerRoot $this->getComposerRoot($href$this->inVendor)) {

            
$this->attr['ellipsis'] = \strlen($href) - \strlen($composerRoot) + 1;

            
$this->attr['ellipsis-type'] = 'path';

            
$this->attr['ellipsis-tail'] = + ($this->inVendor \strlen(implode(''\array_slice(explode(\DIRECTORY_SEPARATORsubstr($href$this->attr['ellipsis'])), 02))) : 0);

        } elseif (
\count($ellipsis explode(\DIRECTORY_SEPARATOR$href))) {

            
$this->attr['ellipsis'] = \strlen(implode(''\array_slice($ellipsis, -2)));

            
$this->attr['ellipsis-type'] = 'path';
            $this->attr['ellipsis-type'] = 'path';

            
$this->attr['ellipsis-tail'] = + ($this->inVendor \strlen(implode(''\array_slice(explode(\DIRECTORY_SEPARATORsubstr($href$this->attr['ellipsis'])), 02))) : 0);

        } elseif (
\count($ellipsis explode(\DIRECTORY_SEPARATOR$href))) {

            
$this->attr['ellipsis'] = \strlen(implode(''\array_slice($ellipsis, -2)));

            
$this->attr['ellipsis-type'] = 'path';

            
$this->attr['ellipsis-tail'] = 1;

        }
                } elseif (\is_array($v)) {

                    
$signature .= $v '[…'.\count($v).']' '[]';

                } elseif (
\is_string($v)) {

                    
$signature .= 10 \strlen($v) && !str_contains($v'\\') ? "'{$v}'" "'…".\strlen($v)."'";

                } elseif (
\is_bool($v)) {

                    
$signature .= $v 'true' 'false';

                } elseif (
\is_object($v)) {
                            $stub = new Stub();

                            
$stub->type Stub::TYPE_STRING;

                            
$stub->class Stub::STRING_BINARY;

                            if (
<= $maxString && $cut \strlen($v) - $maxString) {

                                
$stub->cut $cut;

                                
$stub->value substr($v0, -$cut);

                            } else {
        if (isset($attr['ellipsis'], $attr['ellipsis-type'])) {

            
$prefix substr($value0, -$attr['ellipsis']);

            if (
'cli' === \PHP_SAPI && 'path' === $attr['ellipsis-type'] && isset($_SERVER[$pwd '\\' === \DIRECTORY_SEPARATOR 'CD' 'PWD']) && str_starts_with($prefix$_SERVER[$pwd])) {

                
$prefix '.'.substr($prefix\strlen($_SERVER[$pwd]));

            }

            if (!empty(
$attr['ellipsis-tail'])) {

                
$prefix .= substr($value, -$attr['ellipsis'], $attr['ellipsis-tail']);
        if ($this->colors) {

            if (
$cchrCount && "\033" === $value[0]) {

                
$value substr($value\strlen($startCchr));

            } else {

                
$value "\033[{$this->styles[$style]}m".$value;

            }
                $value "\033[{$this->styles[$style]}m".$value;

            }

            if (
$cchrCount && str_ends_with($value$endCchr)) {

                
$value substr($value0, -\strlen($endCchr));

            } else {

                
$value .= "\033[{$this->styles['default']}m";

            }