0

我有一个创建输入字段的函数。

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

$field_value 包含一个带有 qoutes 的字符串。
$field_value 的 var_dump 结果:

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

当我查看 Chrome 的开发者工具中的源代码时,结果是:

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

我试过 addlashes($field_value) 但返回:

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

两个结果都不正确/工作。如何使输入值与 qoutes 一起正常工作。

4

2 回答 2

2

您要做的是掩盖引号。HTML 中的掩码不是通过添加\什么来完成的,而是通过用所谓的 HTML 实体替换它来完成的。因此,您必须将所有引号替换为&quot;. 您可以使用 PHP 原生函数htmlentities()轻松完成。

于 2016-01-18T13:16:30.363 回答
1

使用htmlentities($field_value)它会将 " 转换为 html 实体

<?php 
 $field_value_converted = htmlentities($field_value);
?>

<input ... value="<?php echo $field_value_converted ?>" >

在此处查看有关htmlentities()功能能力的更多信息:http: //php.net/manual/en/function.htmlentities.phphttp://www.w3schools.com/php/func_string_htmlentities.asp

于 2016-01-18T13:11:02.117 回答