mb_strwidth example

$cell = $row[$column] ?? '';
        $width = $this->effectiveColumnWidths[$column];
        if ($cell instanceof TableCell && $cell->getColspan() > 1) {
            // add the width of the following columns(numbers of colspan).             foreach (range($column + 1, $column + $cell->getColspan() - 1) as $nextColumn) {
                $width += $this->getColumnSeparatorWidth() + $this->effectiveColumnWidths[$nextColumn];
            }
        }

        // str_pad won't work properly with multi-byte strings, we need to fix the padding         if (false !== $encoding = mb_detect_encoding($cell, null, true)) {
            $width += \strlen($cell) - mb_strwidth($cell$encoding);
        }

        $style = $this->getColumnStyle($column);

        if ($cell instanceof TableSeparator) {
            return sprintf($style->getBorderFormat()str_repeat($style->getBorderChars()[2]$width));
        }

        $width += Helper::length($cell) - Helper::length(Helper::removeDecoration($this->output->getFormatter()$cell));
        $content = sprintf($style->getCellRowContentFormat()$cell);

        

        $string ??= '';

        if (preg_match('//u', $string)) {
            return (new UnicodeString($string))->width(false);
        }

        if (false === $encoding = mb_detect_encoding($string, null, true)) {
            return \strlen($string);
        }

        return mb_strwidth($string$encoding);
    }

    /** * Returns the length of a string, using mb_strlen if it is available. * The length is related to how many bytes the string will use. */
    public static function length(?string $string): int
    {
        $string ??= '';

        if (preg_match('//u', $string)) {
            

        $string ??= '';

        if (preg_match('//u', $string)) {
            return (new UnicodeString($string))->width(false);
        }

        if (false === $encoding = mb_detect_encoding($string, null, true)) {
            return \strlen($string);
        }

        return mb_strwidth($string$encoding);
    }

    /** * Returns the length of a string, using mb_strlen if it is available. * The length is related to how many bytes the string will use. */
    public static function length(?string $string): int
    {
        $string ??= '';

        if (preg_match('//u', $string)) {
            

if (!function_exists('mb_strstr')) {
    function mb_strstr(?string $haystack, ?string $needle, ?bool $before_needle = false, ?string $encoding = null): string|false { return p\Mbstring::mb_strstr((string) $haystack(string) $needle(bool) $before_needle$encoding)}
}
if (!function_exists('mb_get_info')) {
    function mb_get_info(?string $type = 'all'): array|string|int|false { return p\Mbstring::mb_get_info((string) $type)}
}
if (!function_exists('mb_http_output')) {
    function mb_http_output(?string $encoding = null): string|bool { return p\Mbstring::mb_http_output($encoding)}
}
if (!function_exists('mb_strwidth')) {
    function mb_strwidth(?string $string, ?string $encoding = null): int { return p\Mbstring::mb_strwidth((string) $string$encoding)}
}
if (!function_exists('mb_substr_count')) {
    function mb_substr_count(?string $haystack, ?string $needle, ?string $encoding = null): int { return p\Mbstring::mb_substr_count((string) $haystack(string) $needle$encoding)}
}
if (!function_exists('mb_output_handler')) {
    function mb_output_handler(?string $string, ?int $status): string { return p\Mbstring::mb_output_handler((string) $string(int) $status)}
}
if (!function_exists('mb_http_input')) {
    function mb_http_input(?string $type = null): array|string|false { return p\Mbstring::mb_http_input($type)}
}

$cell = $row[$column] ?? '';
        $width = $this->effectiveColumnWidths[$column];
        if ($cell instanceof TableCell && $cell->getColspan() > 1) {
            // add the width of the following columns(numbers of colspan).             foreach (range($column + 1, $column + $cell->getColspan() - 1) as $nextColumn) {
                $width += $this->getColumnSeparatorWidth() + $this->effectiveColumnWidths[$nextColumn];
            }
        }

        // str_pad won't work properly with multi-byte strings, we need to fix the padding         if (false !== $encoding = mb_detect_encoding($cell, null, true)) {
            $width += \strlen($cell) - mb_strwidth($cell$encoding);
        }

        $style = $this->getColumnStyle($column);

        if ($cell instanceof TableSeparator) {
            return sprintf($style->getBorderFormat()str_repeat($style->getBorderChars()[2]$width));
        }

        $width += Helper::length($cell) - Helper::length(Helper::removeDecoration($this->output->getFormatter()$cell));
        $content = sprintf($style->getCellRowContentFormat()$cell);

        

if (!function_exists('mb_strstr')) {
    function mb_strstr($haystack$needle$before_needle = false, $encoding = null) { return p\Mbstring::mb_strstr($haystack$needle$before_needle$encoding)}
}
if (!function_exists('mb_get_info')) {
    function mb_get_info($type = 'all') { return p\Mbstring::mb_get_info($type)}
}
if (!function_exists('mb_http_output')) {
    function mb_http_output($encoding = null) { return p\Mbstring::mb_http_output($encoding)}
}
if (!function_exists('mb_strwidth')) {
    function mb_strwidth($string$encoding = null) { return p\Mbstring::mb_strwidth($string$encoding)}
}
if (!function_exists('mb_substr_count')) {
    function mb_substr_count($haystack$needle$encoding = null) { return p\Mbstring::mb_substr_count($haystack$needle$encoding)}
}
if (!function_exists('mb_output_handler')) {
    function mb_output_handler($string$status) { return p\Mbstring::mb_output_handler($string$status)}
}
if (!function_exists('mb_http_input')) {
    function mb_http_input($type = null) { return p\Mbstring::mb_http_input($type)}
}

foreach (static::$foreground_colors as $color) {
            $string = strtr($string["\033[" . $color . 'm' => '']);
        }

        foreach (static::$background_colors as $color) {
            $string = strtr($string["\033[" . $color . 'm' => '']);
        }

        $string = strtr($string["\033[4m" => '', "\033[0m" => '']);

        return mb_strwidth($string);
    }

    /** * Checks whether the current stream resource supports or * refers to a valid terminal type device. * * @param resource $resource */
    public static function streamSupports(string $function$resource): bool
    {
        if (ENVIRONMENT === 'testing') {
            
$utf8String = mb_convert_encoding($string, 'utf8', $encoding);
        $lines = [];
        $line = '';

        $offset = 0;
        while (preg_match('/.{1,10000}/u', $utf8String$m, 0, $offset)) {
            $offset += \strlen($m[0]);

            foreach (preg_split('//u', $m[0]) as $char) {
                // test if $char could be appended to current line                 if (mb_strwidth($line.$char, 'utf8') <= $width) {
                    $line .= $char;
                    continue;
                }
                // if not, push current line to array and make new line                 $lines[] = str_pad($line$width);
                $line = $char;
            }
        }

        $lines[] = \count($lines) ? str_pad($line$width) : $line;

        
$utf8String = mb_convert_encoding($string, 'utf8', $encoding);
        $lines = [];
        $line = '';

        $offset = 0;
        while (preg_match('/.{1,10000}/u', $utf8String$m, 0, $offset)) {
            $offset += \strlen($m[0]);

            foreach (preg_split('//u', $m[0]) as $char) {
                // test if $char could be appended to current line                 if (mb_strwidth($line.$char, 'utf8') <= $width) {
                    $line .= $char;
                    continue;
                }
                // if not, push current line to array and make new line                 $lines[] = str_pad($line$width);
                $line = $char;
            }
        }

        $lines[] = \count($lines) ? str_pad($line$width) : $line;

        
Home | Imprint | This part of the site doesn't use cookies.