From e9a0956be41cf9c51de6f43146f05bd3a3703ce3 Mon Sep 17 00:00:00 2001 From: Frederik Bosch Date: Mon, 18 Mar 2024 19:45:32 +0100 Subject: [PATCH] calculate length once --- src/Stream/OptimalTransferEncodedPhraseStream.php | 8 +++++--- src/Stream/OptimalTransferEncodedTextStream.php | 6 ++++-- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/Stream/OptimalTransferEncodedPhraseStream.php b/src/Stream/OptimalTransferEncodedPhraseStream.php index 1ac38a3c..655fac0e 100644 --- a/src/Stream/OptimalTransferEncodedPhraseStream.php +++ b/src/Stream/OptimalTransferEncodedPhraseStream.php @@ -48,17 +48,19 @@ public function __construct(string $text, int $lineLength = 78, string $lineBrea */ private function calculateOptimalStream(string $text): StreamInterface { - if (\strcspn($text, self::NON_7BIT_CHARS) === \strlen($text)) { + $length = \strlen($text); + + if (\strcspn($text, self::NON_7BIT_CHARS) === $length) { $this->encoding = '7bit'; return new AsciiEncodedStream($text, $this->lineLength, $this->lineBreak); } - if (\strcspn($text, HeaderValueParameter::RFC_822_T_SPECIAL) !== \strlen($text)) { + if (\strcspn($text, HeaderValueParameter::RFC_822_T_SPECIAL) !== $length) { $this->encoding = 'base64'; return Base64EncodedStream::fromString($text, $this->lineLength, $this->lineBreak); } - if (\preg_match_all('/[\000-\010\013\014\016-\037\177-\377]/', $text) > (\strlen($text) / 3)) { + if (\preg_match_all('/[\000-\010\013\014\016-\037\177-\377]/', $text) > ($length / 3)) { $this->encoding = 'base64'; return Base64EncodedStream::fromString($text, $this->lineLength, $this->lineBreak); } diff --git a/src/Stream/OptimalTransferEncodedTextStream.php b/src/Stream/OptimalTransferEncodedTextStream.php index 9c5a63e2..1edb6934 100644 --- a/src/Stream/OptimalTransferEncodedTextStream.php +++ b/src/Stream/OptimalTransferEncodedTextStream.php @@ -47,12 +47,14 @@ public function __construct(string $text, int $lineLength = 78, string $lineBrea */ private function calculateOptimalStream(string $text): StreamInterface { - if (\strcspn($text, self::NON_7BIT_CHARS) === \strlen($text)) { + $length = \strlen($text); + + if (\strcspn($text, self::NON_7BIT_CHARS) === $length) { $this->encoding = '7bit'; return new AsciiEncodedStream($text, $this->lineLength, $this->lineBreak); } - if (\preg_match_all('/[\000-\010\013\014\016-\037\177-\377]/', $text) > (\strlen($text) / 3)) { + if (\preg_match_all('/[\000-\010\013\014\016-\037\177-\377]/', $text) > ($length / 3)) { $this->encoding = 'base64'; return Base64EncodedStream::fromString($text, $this->lineLength, $this->lineBreak); }