выравнивание — PHP выравнивает текст по вертикали с помощью табуляторов

Это может быть очень дурацкий вопрос, и я уверен, что кто-то уже задавал это, но я ничего не нашел. Так что моя проблема довольно проста. В моем php-файле у меня есть функция, которая сохраняет IP-адрес посетителя вместе с меткой времени в файл:

$ip=$_SERVER['REMOTE_ADDR'];
$timestamp=date("\td.m.Y  H:i:s");
$fp = fopen('log', 'a');
fwrite($fp, $ip."  ".$timestamp."\n");
fclose($fp);

Я использую \ t, чтобы поместить табулятор между IP и timestamp, но IP-адреса имеют различную длину, поэтому он делает это:

86.122.146.130          05.08.2017  09:59:25
188.175.16.157          05.08.2017  13:36:42
60.191.38.77    05.08.2017  17:37:44
106.74.48.171   05.08.2017  21:38:57
185.110.132.239         06.08.2017  02:08:04

Как я могу выровнять метки времени по вертикали? Спасибо.

0

Решение

Ты можешь использовать sprintf() заполнить пробелами и выровнять значения:

$line = sprintf("%-20s %20s\n", $ip, $timestamp);

Приведенный выше код возвращает строку с двумя полями длиной 20 символов, где первое поле выровнено по левому краю (обратите внимание на знак минус).

Также вы можете использовать str_pad() функция (по умолчанию она дополняет строку пробелами справа):

$line = str_pad($ip, 20) . str_pad($timestamp, 20) . "\n";
1

Другие решения

Других решений пока нет …