Tengo el siguiente archivo txt:

++Casarse++M++B++NY++

++Jack++F++O++LS++

escribir una .txt archivo:

Nombre:Casarse Con

Sexo:M

Tipo de sangre:B

Ciudad:NY

Nombre:Jack

Sexo:F

Tipo de sangre:O

Ciudad:LS

Mi código es:

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

Debe este trabajo? Porque no devuelve nada.

Thx.

  • Analizar el archivo de texto, ponerlo en las variables, y luego no hacer nada con él. Trate de dumping $num.
  • Usted no devolver nada (o se extraen las variables).
InformationsquelleAutor Ruth | 2012-12-05

4 Comentarios

  1. 2
    $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 );

    Para escribir a un archivo, debe puño crear un búfer y, a continuación, escribir en el archivo. La forma más sencilla de hacerlo sería con file_put_contents. Ser conscientes de que la file_put_content método utiliza más memoria, a continuación, fopen, fwrite y fclose hace.

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

    Con fopen, fwrite y 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 );
    • Cómo escribir una .archivo txt?
  2. 1

    No salida de la nada, porque se están arn no usar $name, $sex etc. Intente cambiar el siguiente fragmento de código en su código y ver lo que hace ahora:

    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>";
     }
  3. 0

    Ya casi están en la dirección correcta. Usted debe incluir su escribir el archivo en el mismo bucle que usted está recibiendo su contenido.

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

    Su inicial código no funcionará porque fwrite espera una cadena y se pasa un array. Y en el caso de que usted hizo pasar la cadena, sólo incluye la última línea de su test.txt archivo.

  4. 0

    He tenido un problema similar, yo no era capaz de imprimir el [1] componente de la «explotar» mientras [0] componente impreso correctamente. En mi caso lo he solucionado cambiando el tiempo del lazo de:

    while(!feof($myfile)) {
    
            $row = fgets($myfile);
    
            $components = explode(",", $row);
            $myVar = $components[1];
            echo $myVar;
    }

    a

    while($row = fgets($myfile)) {
    
            $components = explode(",", $row);
            $myVar = $components[1];
            echo $myVar;
    }

Dejar respuesta

Please enter your comment!
Please enter your name here