code: private static function wordwrap($string, $width)
      {
          $result = [];
          $currentLine = 0;
          $lineLength = 0;
          foreach (explode(' ', $string) as $word) {
              $wordLength = \strlen(Preg::replace('~</?(\w+)>~', '', $word));
              if (0 !== $lineLength) {
                  ++$wordLength; // space before word
              }
  
              if ($lineLength + $wordLength > $width) {
                  ++$currentLine;
                  $lineLength = 0;
              }
  
              $result[$currentLine][] = $word;
              $lineLength += $wordLength;
          }
  
          return array_map(static function ($line) {
              return implode(' ', $line);
          }, $result);
      }
docs: Wraps a string to the given number of characters, ignoring style tags.
  
  @param string $string
  @param int    $width
  
  @return string[]