Shahid Shabbir Shahid Shabbir - 2 months ago 11
PHP Question

How to use explode with loop in PHP taking input from html textarea

For example: Input from user in text area will be as below:

123111_Testingzone
123222_Testinghouse
123333_Testingcity


Output should be in downloaded_file.txt and it should look like as below;

My testname is 123111
My testname is 123222
My testname is 123333


My process:

I try to take multiple input in each line in one textarea in html form. Trying to explode it in PHP and loop it to use it with predefined text and output as file.


  • HTML CODE:

    <!DOCTYPE html>
    <html>
    <head>
    <title>Test/title>
    </head>
    <header>
    <h1>Test_Page</h1>
    </header>

    <body>
    <form action="abc.php" method="post">
    <h3>Option1</h3>
    Test Name: <textarea name="testname1"></textarea>
    <input type="submit" value="Download">
    </form>

    </body>
    </html>


    For PHP code, I want only first 6 letters of each line in text area and repeat it as many text enter and output in one file.

  • PHP CODE:

    <?php

    $testname = $_POST["testname1"];
    $array = explode('\n',$testname);
    $filename = "downloaded_file.txt";
    $testid = substr("{$array}",0,6);
    foreach ($testid as $content)
    {
    $contenter = "My test name is {$content}";
    }
    $f = fopen($filename, 'w');
    fwrite($f, $contenter);
    fclose($f);


    header("Cache-Control: public");
    header("Content-Description: File Transfer");
    header("Content-Length: ". filesize("$filename").";");
    header("Content-Disposition: attachment; filename=$filename");
    header("Content-Type: application/octet-stream; ");
    header("Content-Transfer-Encoding: binary");

    readfile($filename);


    ?>



I dont know where my code is wrong and how to correct it? Please help.

Answer

The corrected version of your code. Comments inline.

<?php

// Initial input
$testname = $_POST["testname1"];

// Split on newline. You need double quotes here, as escape sequences for special characters like \n are not
// interpreted in single quoted strings
$array = explode("\n",$testname);

// Declare contenter string, outside foreach loop
$contenter = "";

// For each line
foreach ($array as $line)
{   

    // Take the first 6 characters
    $testid = substr($line,0,6);

    // Put testid in string, and append it to the $contenter string.
    $contenter .= "My test name is {$testid}\n";
}
// Write the whole thing to the file
$filename = "downloaded_file.txt";
$f = fopen($filename, 'w');
fwrite($f, $contenter);
fclose($f);


header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Length: ". filesize("$filename").";");
header("Content-Disposition: attachment; filename=$filename");
header("Content-Type: text/plain; ");

readfile($filename);


?>