0

次のtxtファイルがあります。

++結婚++M++B++NY++

++ジャック++F++O++LS++

.txt ファイルに書き込みます。

お名前:結婚

性別:M

血液型:B型

市:NY

名前:ジャック

性別:女

血液型:O型

都市:LS

私のコードは次のとおりです。

$fn = fopen("test.txt","r") or die("fail to open file");
 
$content = array();
 
 while($row = fgets($fn)) {

    $num = explode("++", $row);
    $name = $num[0];
    $sex = $num[1];
    $blood =  $num[2];
    $city = $num[3];
 }

$fp = fopen('output.txt', 'w');     
fwrite($fp, $row);
fclose($fp);

これは機能するはずですか?何も返さないからです。

どうも。

4

5 に答える 5

4
$fn = fopen("test.txt","r") or die("fail to open file");

while($row = fgets($fn)) {
  list( $sName, $sSex, $sBlood, $sCity ) = explode( "++", $row );

  echo 'Name:' . $sName . '<br />';
  echo 'Sex:' . $sSex . '<br />';
  echo 'Blood type:' . $sBlood . '<br />';
  echo 'City:' . $sCity . '<br />';
}

fclose( $fn );

ファイルに書き込むには、まずバッファを作成してからファイルに書き込む必要があります。これを行う最も簡単な方法は、file_put_contents を使用することです。file_put_content メソッドは、fopen、fwrite、および fclose よりも多くのメモリを使用することに注意してください。

$fn = fopen("test.txt","r") or die("fail to open file");

$sBuffer = '';
while($row = fgets($fn)) {
    list( $sName, $sSex, $sBlood, $sCity ) = explode( "++", $row );

    $sBuffer .= 'Name:' . $sName . PHP_EOL;
    $sBuffer .= 'Sex:' . $sSex . PHP_EOL;
    $sBuffer .= 'Blood type:' . $sBlood . PHP_EOL;
    $sBuffer .= 'City:' . $sCity . PHP_EOL;

    $sBuffer .= PHP_EOL; // There will be a empty line after each "set"
}

fclose( $fn );

file_put_contents( 'path/to/file.txt', $sBuffer );

fopen、fwrite、および fopen を使用。

$fn = fopen("test.txt","r") or die("fail to open file");

$rWrite = fopen( 'path/to/file.txt', 'w' ) or die( 'Could not open file for writing' );

while($row = fgets($fn)) {
    list( $sName, $sSex, $sBlood, $sCity ) = explode( "++", $row );

    fwrite( $rWrite, 'Name:' . $sName . PHP_EOL );
    fwrite( $rWrite, 'Sex:' . $sSex . PHP_EOL );
    fwrite( $rWrite, 'Blood type:' . $sBlood . PHP_EOL );
    fwrite( $rWrite, 'City:' . $sCity . PHP_EOL );

    fwrite( $rWrite, PHP_EOL ); // There will be a empty line after each "set"
}

fclose( $fn );
fclose( $rWrite );
于 2012-12-05T10:11:17.973 に答える
1

$nameなどを使用していないため、何も出力されません$sex。コード内の次のスニペットを変更して、現在の動作を確認してください。

while($row = fgets($fn))
{

    $num = explode("++", $row);
    $name = $num[0];
    $sex = $num[1];
    $blood =  $num[2];
    $city = $num[3];

    echo "$name $sex $blood $city<br>";
 }
于 2012-12-05T10:06:58.867 に答える
0

あなたはほぼ正しい方向に進んでいます。コンテンツを取得するのと同じループに、ファイルへの書き込みを含める必要があります。

$fn = fopen("test.txt","r") or die("fail to open file");

$fp = fopen('output.txt', 'w') or die('fail to open output file');
while($row = fgets($fn)) {
  $num = explode("++", $row);
  $name = $num[0];
  $sex = $num[1];
  $blood =  $num[2];
  $city = $num[3];

  fwrite($fp, "Name:$name\n");
  fwrite($fp, "Sex:$sex\n");
  fwrite($fp, "Blood:$blood\n");
  fwrite($fp, "City:$city\n");
}
fclose($fn);
fclose($fp);

fwrite は文字列を想定しており、配列を渡しているため、最初のコードは機能しません。文字列を渡した場合は、test.txtファイルの最後の行のみが含まれます。

于 2012-12-05T10:29:47.110 に答える