diff --git a/src/Symfony/Component/Console/Helper/Helper.php b/src/Symfony/Component/Console/Helper/Helper.php index acec994db83c4..579c8ddb90ba4 100644 --- a/src/Symfony/Component/Console/Helper/Helper.php +++ b/src/Symfony/Component/Console/Helper/Helper.php @@ -12,7 +12,6 @@ namespace Symfony\Component\Console\Helper; use Symfony\Component\Console\Formatter\OutputFormatterInterface; -use Symfony\Component\String\UnicodeString; /** * Helper is the base class for all helper classes. @@ -46,11 +45,7 @@ public function getHelperSet() */ public static function strlen(?string $string) { - $string ?? $string = ''; - - if (preg_match('//u', $string)) { - return (new UnicodeString($string))->width(false); - } + $string = (string) $string; if (false === $encoding = mb_detect_encoding($string, null, true)) { return \strlen($string); @@ -64,9 +59,9 @@ public static function strlen(?string $string) * * @return string The string subset */ - public static function substr(?string $string, int $from, int $length = null) + public static function substr(string $string, int $from, int $length = null) { - $string ?? $string = ''; + $string = (string) $string; if (false === $encoding = mb_detect_encoding($string, null, true)) { return substr($string, $from, $length); @@ -123,13 +118,7 @@ public static function formatMemory(int $memory) public static function strlenWithoutDecoration(OutputFormatterInterface $formatter, ?string $string) { - $string = self::removeDecoration($formatter, $string); - - if (preg_match('//u', $string)) { - return (new UnicodeString($string))->width(true); - } - - return self::strlen($string); + return self::strlen(self::removeDecoration($formatter, $string)); } public static function removeDecoration(OutputFormatterInterface $formatter, ?string $string) diff --git a/src/Symfony/Component/Console/Helper/QuestionHelper.php b/src/Symfony/Component/Console/Helper/QuestionHelper.php index 5bf8186b8fbf8..c0fb5461fc660 100644 --- a/src/Symfony/Component/Console/Helper/QuestionHelper.php +++ b/src/Symfony/Component/Console/Helper/QuestionHelper.php @@ -311,7 +311,7 @@ private function autocomplete(OutputInterface $output, Question $question, $inpu $remainingCharacters = substr($ret, \strlen(trim($this->mostRecentlyEnteredValue($fullChoice)))); $output->write($remainingCharacters); $fullChoice .= $remainingCharacters; - $i = (false === $encoding = mb_detect_encoding($fullChoice, null, true)) ? \strlen($fullChoice) : mb_strlen($fullChoice, $encoding); + $i = self::strlen($fullChoice); $matches = array_filter( $autocomplete($ret), diff --git a/src/Symfony/Component/Console/Style/SymfonyStyle.php b/src/Symfony/Component/Console/Style/SymfonyStyle.php index 075fe6621cc1f..187bceed2a75f 100644 --- a/src/Symfony/Component/Console/Style/SymfonyStyle.php +++ b/src/Symfony/Component/Console/Style/SymfonyStyle.php @@ -501,6 +501,8 @@ private function createBlock(iterable $messages, string $type = null, string $st } $line = $prefix.$line; + $decorationLength = Helper::strlen($line) - Helper::strlenWithoutDecoration($this->getFormatter(), $line); + $messageLineLength = min($this->lineLength - $prefixLength - $indentLength + $decorationLength, $this->lineLength); $line .= str_repeat(' ', max($this->lineLength - Helper::strlenWithoutDecoration($this->getFormatter(), $line), 0)); if ($style) { diff --git a/src/Symfony/Component/Console/Tests/Fixtures/Style/SymfonyStyle/command/command_21.php b/src/Symfony/Component/Console/Tests/Fixtures/Style/SymfonyStyle/command/command_21.php deleted file mode 100644 index 8460e7ececf37..0000000000000 --- a/src/Symfony/Component/Console/Tests/Fixtures/Style/SymfonyStyle/command/command_21.php +++ /dev/null @@ -1,13 +0,0 @@ -success('Lorem ipsum dolor sit amet'); - $output->success('Lorem ipsum dolor sit amet with one emoji π'); - $output->success('Lorem ipsum dolor sit amet with so many of them π©βπΎπ©βπΎπ©βπΎπ©βπΎπ©βπΎ'); -}; diff --git a/src/Symfony/Component/Console/Tests/Fixtures/Style/SymfonyStyle/output/output_21.txt b/src/Symfony/Component/Console/Tests/Fixtures/Style/SymfonyStyle/output/output_21.txt deleted file mode 100644 index aee3c4a89c2e7..0000000000000 --- a/src/Symfony/Component/Console/Tests/Fixtures/Style/SymfonyStyle/output/output_21.txt +++ /dev/null @@ -1,7 +0,0 @@ - - [OK] Lorem ipsum dolor sit amet - - [OK] Lorem ipsum dolor sit amet with one emoji π - - [OK] Lorem ipsum dolor sit amet with so many of them π©βπΎπ©βπΎπ©βπΎπ©βπΎπ©βπΎ -
Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.
Alternative Proxies: