Search code examples
phphtmlencodingquotesaddslashes

return input field with qoute values not working


I have a function that creates input fields.

$string = '<input type="' . $field_type . '" class="form-control" id="' . $field_name . '" name="' . $field_name . '" value="' . $field_value . '">';
return $string

$field_value holds a string with qoutes.
var_dump result of $field_value:

string(19) ""Open Sans",Verdana"

When I look at the source inside the Developer Tools of Chrome the result is:

 <input type="text" class="form-control" id="themesettings[main_body_font_family]" name="themesettings[main_body_font_family]" value="" open="" sans",verdana"="">

I have tried addslashes($field_value) but that returns:

<input type="text" class="form-control" id="themesettings[main_body_font_family]" name="themesettings[main_body_font_family]" value="\" open="" sans\",verdana"="">

Both results are not correct/working. How can I make the input value work correctly with qoutes.


Solution

  • What you are trying to do is to mask the quotes. Masking in HTML is not done by adding \ or something but by replacing it with a so called HTML entity. Thus you have to replace all quotes by &quot;. You can easily do it using PHP native function htmlentities().