Код: Выделить всё
$out->line('Morbi leo risus, porta ac consectetur ac, vestibulum at eros. Aenean lacinia bibendum nulla sed consectetur. Nullam id dolor id nibh ultricies vehicula ut id elit. Aenean lacinia bibendum nulla sed consectetur. Curabitur blandit tempus porttitor.');
Код: Выделить всё
public function line(string $text): void
{
$this->rawLine(wordwrap($text, 80, PHP_EOL));
}
< /code>
Это печатает вывод по нескольким линиям: < /p>
Morbi leo risus, porta ac consectetur ac, vestibulum at eros. Aenean lacinia
bibendum nulla sed consectetur. Nullam id dolor id nibh ultricies vehicula ut id
elit. Aenean lacinia bibendum nulla sed consectetur. Curabitur blandit tempus
porttitor.
< /code>
Теперь я также могу стилизовать части текста, используя коды ANSI Escape: < /p>
$out->line('Morbi leo risus, ' . Style::inline('porta ac consectetur', ['color' => 'blue', 'attribute' => 'bold']) . ' ac, vestibulum at eros. Aenean lacinia bibendum nulla sed consectetur. Nullam id dolor id nibh ultricies vehicula ut id elit. Aenean lacinia bibendum nulla sed consectetur. Curabitur blandit tempus porttitor.');
< /code>
, который преобразуется в это: < /p>
Morbi leo risus, \x1b[34;1mporta ac consectetur\x1b[39;22m ac, vestibulum at
eros. Aenean lacinia bibendum nulla sed consectetur. Nullam id dolor id nibh
ultricies vehicula ut id elit. Aenean lacinia bibendum nulla sed consectetur.
Curabitur blandit tempus porttitor.
Код: Выделить всё
Morbi leo risus, porta ac consectetur ac, vestibulum at eros.
Aenean lacinia bibendum nulla sed consectetur. Nullam id dolor id nibh ultricies
vehicula ut id elit. Aenean lacinia bibendum nulla sed consectetur. Curabitur
blandit tempus porttitor.
Morbi leo risus, porta ac consectetur ac, vestibulum at eros. Aenean lacinia
< /code>
Но после добавления стилей он возвращается как 97 символов: < /p>
Morbi leo risus, \x1b[34;1mporta ac consectetur\x1b[39;22m ac, vestibulum at eros. Aenean lacinia
< /code>
В других частях приложения, как таблица, я «решил» это, имея метод для установки значения столбца, а затем отдельный метод для стиля указанного столбца. Таким образом, я могу надежно получить длину, но также вывести текст в определенном стиле. Он также не решает проблему точного разделения версии стиля. /> Итак, мой вопрос: как я могу надежно разделить текст, содержащий коды ANSI Escape на основе длины текста? < /p>
Подробнее здесь: https://stackoverflow.com/questions/757 ... ine-length