我知道我应该在所有表单文本输入字段中使用htmlentities但这不起作用:
<?php
echo "<tr>
<td align=\"right\">".Telephone." :</td>
<td><input type=\"text\" name=\"telephone\" size=\"27\"
value=\"htmlentities($row[telephone])\"> Inc. dialing codes
</td>
</tr>";
?>
它只是在表格中将输入值显示为“htmlentities(0123456789)”?我做错了什么?
答案 0 :(得分:5)
尝试使用
value=\"" . htmlentities($row[telephone]) . "\"
那里。目前,您的字符串只包含htmlentities字符串并将变量拼接在其中。您需要输出字符串,调用函数并将其结果放置到位,如上所述。
答案 1 :(得分:3)
您无法在字符串中间调用函数。您需要从函数调用中获取返回值,然后将其包含在字符串中。
...然而
<tr>
<td align="right">
<label for="telephone">Telephone:</label>
</td>
<td>
<input type="text"
name="telephone"
id="telephone"
size="27"
value="<?php
echo htmlentities($row[telephone]);
?>">
Inc. dialing codes
</td>
</tr>
......会更清洁。
将摆脱不推荐的表示标记并使用表格进行布局。
答案 2 :(得分:1)
@ workmad3:这不会像他在做PHP一样。
<?php echo '<tr>
<td align="right">' . Telephone . ' :</td>
<td><input type="text" name="telephone" size="27" value="' . htmlentities($row[telephone]) . '" /> Inc. dialing codes</td>
</tr>';
答案 3 :(得分:1)
这将有效:
<?php
echo " <tr>
<td align=\"right\">Telephone :</td>
<td><input type=\"text\" name=\"telephone\" size=\"27\" value=\"".htmlentities($row[telephone])."\"> Inc. dialing codes</td>
</tr>";
?>
顺便说一下,我还纠正了你在这里遇到的一些非常奇怪的语法,比如连接常量“Telephone”的地方,它实际上应该在字符串里面。这些细节很重要,很容易破坏你的代码。
另外,我建议在这样的字符串周围使用单引号而不是双引号,这样就不必转义字符串中的所有双引号。
答案 4 :(得分:1)
如果你只是在寻找make-your-output-safe-in-hml;你应该使用htmlspecialchars(),因为它只是一个电话号码。
htmlspecialchars($row[telephone], ENT_QUOTES);
htmlentities()有点慢,而且多字节字符不太好。但我猜你只是喷射那些问题。
答案 5 :(得分:1)
如果要组合大部分HTML和PHP变量,可以做两件事。
一,使用HEREDOC结构。
$txt = <<<HERETEXT
Put your HTML here.
HERETEXT;
echo $txt;
其次,使用第一个类变量来命名函数,然后在HEREDOC中使用它。
$he = 'htmlentities';
$txt = <<<HERETEXT
{$he($string, ENT_QUOTES, 'UTF-8')}
HERETEXT;
echo $txt;
然而,HTML不应该以非常大的块处理,因为增加了令人讨厌的错误的风险。此外,你可能会不必要地重复自己。
答案 6 :(得分:0)
首先,不要在字符串中回显HTML。将代码与标记分开。
<tr>
<td align="right">Telephone :</td>
<td><input type="text" name="telephone" size="27"
value="<?php echo htmlentities($row['telephone']); ?>"> Inc. dialing codes</td>
</tr>