<?php
error_reporting(-1);
mb_internal_encoding('utf-8');
$text  = "Дым табачный воздух выел.
    Комната -
    глава в крученыховском аде.
    Вспомни -
    за этим окном
    впервые
    руки твои, исступлённый, гладил.
    Сегодня сидишь вот,
    сердце в железе.
    День ещё -
    выгонишь,
    может быть, изругав.
    В мутной передней долго не влезет
    сломанная дрожью рука в рукав.";
$array = preg_split('/\n/u', $text);
$max   = 0;
foreach ($array as &$value) //поиск максимальной длинны
  {
    $value = trim($value);
    if (mb_strlen($value) > $max)
        $max = mb_strlen($value);
  }

foreach ($array as &$value) //дополнение до максимальной длинны
  {
    $len = mb_strlen($value); //насколько изначально отл.
    if (mb_strlen($value) < $max)
        for ($i = 1; $i <= $max - $len; $i++)
            $value .= " ";
  }

$array2 = array_fill(0, $max, "");
for ($k = 0; $k <= $max - 1; $k++)
    for ($i = 0; $i <= count($array) - 1; $i++)
      {
        $array2[$k] .= mb_substr($array[$i], $k, 1);
        $array2[$k] .= ' | ';
      }

foreach ($array2 as $value)
  {
    echo "$value\n";
  }