将包含单引号和双引号的字符串回显到输入值

Echo string containing single and double quotes to input value

我正在从 XML 中提取一个字符串并想将其作为输入文本框的值插入。我在处理包含单引号和双引号的字符串时遇到问题:

We will have a "New Year's Eve countdown"

这是我用来输出的代码。我试过使用 htmlspecialchars 但它不会阻止 html 代码中断,因为字符串中混合了引号。

echo "<p>Info <input type='text' name='info' value='".htmlspecialchars($result->info)."' size='20' /></p>";

如何解决这个问题,使其在文本框中正确显示字符串的值?

您需要将 ENT_QUOTES 标志用于 htmlspecialchars 以使其将双 单引号转换为它们的 html 实体相当于:

echo "<p>Info <input type='text' name='info' value='".htmlspecialchars($result->info, ENT_QUOTES)."' size='20' /></p>";

这将产生以下结果 HTML:

<p>Info <input type='text' name='info' value='We will have a &quot;New Year&#039;s Eve countdown&quot;' size='20' /></p>

正如您从此片段中看到的,在文本输入中显示所需的字符串:

<p>Info <input type='text' name='info' value='We will have a &quot;New Year&#039;s Eve countdown&quot;' size='50' /></p>