biz. txt dosyası alıyorum ama düzgün hizalama almıyorsanız

4 Cevap php

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

Aşağıdaki kod

$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);

4 Cevap

Sütun gibi izlerin almak yerine boşluk sekmeleri (\ t) kullanmanız gerekir

İşte örnek güncellenir

  $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);

Bunun yerine, üç sıralı alanlarda bir "\t" (sekmesi) yazdırmak gerekiyor.

Şöyle

$stringData1 = $_POST['uname1']."\t";
fwrite($fh, $stringData1);

EDIT: dizelerin uzunluğu sizin fark birden fazla sekme varsa, bu her zaman olsa da çalışmayabilir. Eğer bir sekme ayrılmış dosyası oluşturma ediyorsanız, bu çalışacaktır. Sütun görünümü çeşit istiyorsanız bu .. (başka bir düzenleme; paxdiablos cevap ikinci yöntem için daha iyidir.) Iyi bir yaklaşım değildir

Eğer yapıyor gibi görünüyor bütün her alanın sonuna üç boşluk ekleme edilir. Belki de daha fazla gibi bir şey yapıyor olması gerekir:

$stringData1 = substr($_POST['uname1'] . "              ",0,14) . " ";
fwrite($fh, $stringData1);

Diğer bir deyişle, emin alan 14 karakter ya da daha çok, 14 kesiği bu olduğundan emin olun.

Veya daha iyisi, printf imkanları kullanmak:

fprintf ($fh, "%-14s ", $_POST['uname1']);

Aslında, tüm segmenti gibi bir şey sıkıştırılmış olabilir:

$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);

Peki, üç boşluklarla ayrılmış bir dosyaya uname1, password1 ve email1 yazıyoruz (ve hangi nedenle hiç her satırın sonunda üç daha fazla boşluk).

İhtiyacınız kadar str_repeat gibi birçok boşluk eklemek için kullanın: http://php.net/manual/de/function.str-repeat.php

Bu gibi:

$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);

Sen öğrenmek gerekir $ longest_uname, $ longest_password, $ longest_email ilk dizi yineleme ve sütunların her biri için uzun dize bularak.

Eğer boşluk sağ-yastıklı olması son sütunu ihtiyacınız yoksa, siz "longest_email"-kısmını atlayabilirsiniz.

EDIT: Tabii burada belirtilen "tab"-çözümleri tek sütunda dizeleri uzunlukları arasındaki fark bir sekme geçmez sadece çok çalışmak, ama olacaktır. Ayrıca "substr (..., 14)"-yöntem işe, ama hiçbir dize yalnızca 14 karakterden daha uzun olacak ...