リストは次のようになります。
Lorem ipsum dolor sit amet,
consectetur adipisicing elit,
sed do eiusmod tempor
...
このようにすべての単語をインデントしたい:
Lorem ipsum dolor sit amet,
consectetur adipisicing elit,
sed do eiusmod tempor
(または少なくとも最初の列)
私は配列とstr_pad
:を使用してこれを行うことができました
$lines = explode("\n", $text);
$counts = array();
foreach($lines as $line){
$words = explode(' ', $line);
foreach($words as $index => $word){
if(!isset($counts[$index]) || $counts[$index] < strlen($word))
$counts[$index] = strlen($word);
}
}
$text = '';
foreach($lines as $line){
$words = explode(' ', $line);
foreach($words as $index => $word)
$text .= str_pad($word, $counts[$index], ' ' , STR_PAD_RIGHT) . ' ';
$text .= "\n";
}
ただし、テキストが非常に大きいため、かなり多くのメモリを使用します。テキストを配列に分割せずにこれを行うことができる他の方法はありますか?