Mi amigo y yo tenemos un poco de tiempo libre página de inicio juntos. Él no es un programador, y con el fin de que él sea capaz de cambiar el texto en la primera página, he creado un php-script que

1) Lee los datos desde el archivo «tester.txt» (este es el texto que debe ir en la primera página)

2) Imprime este texto en un textarea, donde usted puede editar el texto y volver a presentarlo

3) Escribe el texto editado en el mismo archivo, «tester.txt»

Las dos funciones Read () y Write(); este aspecto

function Read() {
    $file = "tester.txt";
    $fp = fopen($file, "r");
    while(!feof($fp)) {
        $data = fgets($fp, filesize($file));
        echo "$data <br>";
    }
    fclose($fp);
}

function Write() {
    $file = "tester.txt";
    $fp = fopen($file, "w");
    $data = $_POST["tekst"];
    fwrite($fp, $data);
    fclose($fp);
}

El único problema que tengo es que cuando el texto se imprime en un área de texto de la línea de devoluciones se escriben como <br> – y yo realmente no quiero hacer eso, porque al modificar algunos de los códigos y reescribe, otra capa de <br>‘s aparece. Aquí está una captura de pantalla para ilustrar:

Archivo I/O a un área de texto en PHP

Archivo I/O a un área de texto en PHP

¿Hay alguna solución para esto?

Gracias!

Si usted necesita el resto del código, aquí está:

<html>
    <head>
        <title>Updater</title>
    </head>
    <body>
        <?php
               function Read() {
                   $file = "tester.txt";
                   $fp = fopen($file, "r");
                   while(!feof($fp)) {
                       $data = fgets($fp, filesize($file));
                       echo "$data <br>";
                   }
                   fclose($fp);
               }

               function Write() {
                   $file = "tester.txt";
                   $fp = fopen($file, "w");
                   $data = $_POST["tekst"];
                   fwrite($fp, $data);
                   fclose($fp);
               }
        ?>

        <?php
        if ($_POST["submit_check"]){
            Write();
        };
        ?>      

        <form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post">
        <textarea width="400px" height="400px" name="tekst"><?php Read(); ?></textarea><br>
        <input type="submit" name="submit" value="Update text">
        <input type="hidden" name="submit_check" value="1">
        </form>

                <?php
        if ($_POST["submit_check"]){
            echo 'Text updated';
        };
        ?>      


    </body>
</html>
InformationsquelleAutor Latze | 2011-11-29

6 Comentarios

  1. 10

    Esto es más simple de lo que piensas. Usted no debe transmitir el <br> etiquetas como el textarea ya contiene los caracteres de salto de línea (\r\n o \n). Usted no tiene que leer el archivo como que, si se lee de esta manera, usted nunca tendrá que preocuparse por el carácter de los contenidos.

    Cambio:

    $fp = fopen($file, "r");
    while(!feof($fp)) {
        $data = fgets($fp, filesize($file));
        echo "$data <br>";
    }
    fclose($fp);

    a:

    echo file_get_contents( $file);

    Problema resuelto.

    • Por supuesto, usted tendrá que eliminar su actual archivo de texto que contiene un montón de <br> etiquetas, pero después de eso, usted nunca debe ver cualquier <br> etiquetas de nuevo.
  2. 1

    Esto sucede, es porque al escribir el contenido del área de texto, va a poner un <br> al final de cada línea. Pero en un textarea los saltos de línea son notados por "\n". Cuando vas a guardar tu texto existente, la próxima vez que los saltos de línea se sustituye con más <br>.

    Mientras que la impresión del contenido en una página pública, mantener el
    . Pero en la página de edición, quitar el br.

    Aquí es lo que yo habría hecho con el código PHP:

    <?php
        define("FILE_NAME", "tester.txt");
    
        function Read()
        {
            echo @file_get_contents(FILE_NAME);
        }
    
        ;
    
        function Write()
        {
            $data = $_POST["tekst"];
            @file_put_contents(FILE_NAME, $data);
        }
    
        ?>
    
        <?php
        if ($_POST["submit_check"])
        {
            Write();
        }
        ?>      
  3. 0

    Utilizar echo "$data <br>"; – acaba de hacer que echo $data; ?

    • Cómo romper la línea, tendrá lugar, en su caso !!!!!
    • Ya están allí, Wazzzy.
  4. 0

    A adivinar, esta es alojado en un *nix máquina, y él está usando una máquina con Windows para hacer la edición?

    Si este es el caso, cambiar la función de escritura a esto debería resolver el problema:

    function Write(){
        $file = "tester.txt";
        $fp = fopen($file, "w");
        $data = str_replace(array("\r\n","\r"),"\n",$_POST["tekst"]);
        fwrite($fp, $data);
        fclose($fp);
    };
    • texto editado en el editor de texto para Mac 🙂 y el código en AptanaStudio – también para mac
    • Mac puede producir el mismo problema, pruebe la función de arriba y ver si se resuelve. Esto es todo sobre el estilo de los saltos de línea entre los sistemas.
    • No el trabajo – nickb la respuesta hizo, aunque 🙂 gracias de todos modos
  5. 0

    Usted no necesita el <br>‘s. Dependiendo de cómo su <textarea> está configurado, por defecto, las líneas son difíciles envuelto el uso de \n‘s. Estos se conservan al guardar el archivo, por lo tanto no es necesario añadir sus propios saltos de línea.

    • El punto es, no escribo el <br>‘s! Aparecen en sus propios
    • Escribe con echo "$data <br>";

Dejar respuesta

Please enter your comment!
Please enter your name here