Sebastian
Sebastian

Reputation: 415

My <input> box won't display single quotes

If it has a single quote in it, any string that I try to enter into my HTML input box is truncated in the input box once it is submitted. Its POST value comes thru unchanged, but the string shows as truncated in the input box, whether I use htmlspecialchars() or not. A noobie question, no doubt, but I've tried hard to figure it out and run out of ideas. Thanks for any help.

    <!DOCTYPE html>
    <body><title> Self-inserting input_box_SO.php </title>
    <?php
    //  POST form initiation.
    ECHO "<form action='input_box_SO.php' method='post'>"; 

    // GET POSTed value and escape it for HTML use
    $Caption_htmlspecialchars=$_POST['Caption_htmlspecialchars'];
    $Caption_htmlspecialchars=htmlspecialchars($Caption_htmlspecialchars);
    ECHO "The echo of the variable <em> \$Caption_htmlspecialchars </em> looks like this:<br>";
    ECHO "<b> $Caption_htmlspecialchars </b><br>";
    ECHO "But in the input box, \$Caption_htmlspecialchars is truncated by a single quote: <br>";
    // ETA: Bad old line that caused the problem, now commented:
    // ECHO "<input type='text' name='Caption_htmlspecialchars' size=100 value='$Caption_htmlspecialchars' maxlength = 100 required /><br><br>"; 
    // ETA: Newly added line that fixes the problem:
echo '<input type="text" name="Caption_htmlspecialchars" size=100 value="'.$Caption_htmlspecialchars.'" maxlength = 100 required /><br><br>';
    // SUBMIT button.  Submits back to the same page: input_box.php
    echo "<b><input type='Submit' name='submit' value='Submit'/></b></br></br>";
    ?>
    </body></html> 

enter image description here

Here is what Inspect Elements > Elements shows for the input element:

input_box_SO.php The echo of the variable $Caption_htmlspecialchars looks like this:
test with special chars. & " < > and a single quote ('), which causes truncation in the input box.
But in the input box, $Caption_htmlspecialchars is truncated by a single quote:
and a single quote (" ),="" which="" causes="" truncation="" in="" the="" input="" box.="" '="" maxlength="100" required="">



With the Source looking like this: value='test with special chars. &amp; &quot; &lt; &gt; and a single quote ('), which causes truncation in the input box. '

Upvotes: 3

Views: 2298

Answers (2)

B. Desai
B. Desai

Reputation: 16446

You need to change your sequence of single quotes nad double quotes to display string. change your echo <input as below

echo '<input type="text" name="Caption_htmlspecialchars" size=100 value="'.$Caption_htmlspecialchars.'" maxlength = 100 required /><br><br>'; 

Upvotes: 3

Rence
Rence

Reputation: 134

Try to use the addslashes and do it like

$Caption_htmlspecialchars = addslashes($Caption_htmlspecialchars);

Upvotes: 0

Related Questions