we are getting the following texfile_screenshot1.JPG when we are exporting data to .txt file
we need output which is shown in texfile_screenshot2.JPG
以下是代码
$myFile = "user_password.txt";
$fh = fopen($myFile, 'a') or die("can't open file");
$newline ="\r\n";
fwrite ($fh,$newline);
$stringData1 = $_POST['uname1']." "." "." " ;
fwrite($fh, $stringData1);
$stringData1 =$_POST['password1']." "." "." ";
fwrite($fh,$stringData1);
$stringData1 = $_POST['email1']." "." "." ";
fwrite($fh, $stringData1);
fclose($fh);
答案 0 :(得分:0)
您需要打印"\t"
(标签)而不是三个连接空格。
喜欢这样
$stringData1 = $_POST['uname1']."\t";
fwrite($fh, $stringData1);
编辑:如果您的字符串长度差异超过一个标签,这可能并不总是有效。如果您正在创建制表符分隔文件,这将有效。如果你想要某种列视图,这不是一个好方法..(另一个编辑;对于第二种方法,paxdiablos答案更好。)
答案 1 :(得分:0)
您需要使用制表符(\ t)而不是空格来获得类似列的对齐
以下是您更新的示例
$myFile = "user_password.txt";
$fh = fopen($myFile, 'a') or die("can't open file");
$newline ="\r\n";
fwrite ($fh,$newline);
$stringData1 = $_POST['uname1']."\t" ;
fwrite($fh, $stringData1);
$stringData1 =$_POST['password1']."\t";
fwrite($fh,$stringData1);
$stringData1 = $_POST['email1']."\t";
fwrite($fh, $stringData1);
fclose($fh);
答案 2 :(得分:0)
您似乎正在做的是在每个字段的末尾添加三个空格。也许你应该做更多的事情:
$stringData1 = substr($_POST['uname1'] . " ",0,14) . " ";
fwrite($fh, $stringData1);
换句话说,确保该字段为14个字符或更多,将其截断为14。
或者更好的是,使用printf工具:
fprintf ($fh, "%-14s ", $_POST['uname1']);
事实上,您的整个细分可以压缩为:
$myFile = "user_password.txt";
$fh = fopen($myFile, 'a') or die("can't open file");
fprintf ($fh, "\r\n%14s %14s %14s", $_POST['uname1'], $_POST['password1'],
$_POST['email1']);
fclose($fh);
答案 3 :(得分:0)
好吧,你将uname1,password1和email1写入一个文件,用三个空格分隔(并且出于什么原因,每行末尾还有三个空格)。
使用str_repeat
根据需要添加任意数量的空格:http://php.net/manual/de/function.str-repeat.php
像这样:
$stringData1 = $POST['uname1'] . str_repeat(" ", $longest_uname - strlen($POST['uname1']) + 1);
fwrite($fh, $stringData1);
$stringData1 = $POST['password1'] . str_repeat(" ", $longest_password - strlen($POST['password1']) + 1);
fwrite($fh, $stringData1);
$stringData1 = $POST['email1'] . str_repeat(" ", $longest_email - strlen($POST['email1']) + 1);
fwrite($fh, $stringData1);
您需要先查找$ longest_uname,$ longest_password,$ longest_email,方法是遍历数组并找到每列最长的字符串。
如果您不需要使用空格右边填充最后一列,则可以跳过“longest_email”-part。
编辑:当然,此处提到的“标签”解决方案也可以使用,但前提是一列中字符串长度之间的差异不会超过一个标签。此外,“substr(...,14)” - 方法也可以,但是只有当字符串不超过14个字符时...