Jason Freeman Jason Freeman - 4 months ago 18
PHP Question

extra spaces and newline PHP automatically get removed TEXTAREA

My code for the input php file is the following.

<!DOCTYPE html>
<html>
<body>
<form name="input" action="welcome.php" method="post">
Comment: <textarea name="input" rows="5" cols="40"></textarea>
<input type="submit" value="Submit">
</form>
</body>
</html>


For the output code it is the following.

<html>
<body>
Welcome <?php $a=$_POST["input"]; echo $a; ?><br>
</body>
</html>


When anything with extra spaces and newline are inputted, it automatically gets removed. For example :

When I input:

abcd
cda xyzb


Output is:

Welcome abcd cda xyzb

Answer

This is because new line characters are represented as \r\n, in the sourcecode you'll see new lines. Whitespaces get truncated if one follows another in HTML.

I suggest you to use the <pre> tag, which does not only save the new lines (like php's nl2br()) but also preserves the whitespaces.

Using <pre>:

<html>
<body>
<pre class="yourStyleForThisPreFormattedText">
Welcome <?php $a = $_POST["input"]; 
echo $a; ?>
</pre>
</body>
</html>

Using special chars (&nbsp;) and PHP functions:

<html>
<body>
Welcome <?php $a = nl2br(str_replace(' ', '&nbsp;', $_POST["input"]), true); 
echo $a; ?>
</body>
</html>

Notice:

For HTML4 and HTML5 use nl2br($str, true);, for XHTML4 use nl2br($str); - the difference is in the output: <br> and <br />. See http://php.net/nl2br