Невозможно получить пробел, добавленный к строке в переполнении стека

Я пытаюсь создать веб-форму, которая выводит в плоский текстовый файл построчно, что такое ввод в веб-форму. Некоторые поля не обязательны, но выходной файл должен вводить пробелы для того, что не заполнено. Вот что я пытаюсь:

$output = $_SESSION["emp_id"];
if(!empty($_POST['trans_date'])) {
$output .= $_POST["trans_date"];
}else{
$output = str_pad($output, 6);
}
if(!empty($_POST['chart'])) {
$output .= $_POST["chart"];
}else{
$output = str_pad($output, 6);
}

write_line($output);

function write_line($line){
$file = 'coh.txt';
// Open the file to get existing content
$current = file_get_contents($file);
// Append a new line to the file
$current .= $line . PHP_EOL;
// Write the contents back to the file
file_put_contents($file, $current);
}

Однако, когда я проверяю свой вывод, пробелы не отображаются. Есть идеи, что с этим происходит? Заранее спасибо!

2

Решение

str_pad заполнение пробелами, а не добавление пробелов. Вы дополняете существующее значение пробелами так, чтобы оно было длиной 6 символов, не добавляя к нему 6 пробелов. Так что если $_SESSION["emp_id"] длиной 6 или более символов, ничего не будет добавлено.

3

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

str_pad () не будет добавлять это количество пробелов, а скорее сделает строку такой длины, добавив соответствующее количество пробелов. Пытаться str_repeat ():

$output = $_SESSION["emp_id"];
if(!empty($_POST['trans_date'])) {
$output .= $_POST["trans_date"];
}else{
$output = $output . str_repeat(' ', 6);
}
if(!empty($_POST['chart'])) {
$output .= $_POST["chart"];
}else{
$output = $output . str_repeat(' ', 6);
}

write_line($output);

function write_line($line) {
$file = 'coh.txt';
// Open the file to get existing content
$current = file_get_contents($file);
// Append a new line to the file
$current .= $line . PHP_EOL;
// Write the contents back to the file
file_put_contents($file, $current);
}

Ура!

1

По вопросам рекламы [email protected]