我对PHP的知识并不强,但我从未见过这种情况。在配置文件中,有在一个数组定义像这样的选项列表:PHP表单变量和POST - HTML编码字符串
$testarray[] = "None";
$testarray[] = "Item 1 with normal text";
$testarray[] = "Item 2® with html encoded string";
$testarray[] = "Item3® with another html encoded string";
所以,现在,当产生的形式,它执行一个简单的每个循环来创建单选按钮的列表:
foreach ($testarray as $key=>$item){
echo '<div id="padBottom"><input type="radio" name="formItem"';
if ($item == $_SESSION['ss']['selection']) echo ' checked="checked"';
echo ' value="' . $item. '" />' . $item. '</div>';
}
到目前为止,表单生成就像它应该。不工作的部分是If语句部分。在此表单发布到的页面上,它执行一个简单调用来设置$_SESSION['ss']['selection'] = $_POST['formItem'];
发生这种情况时,进入会话的值是实际注册的商标符号,而不是我所期望的'®'
。因此,如果您选择一个包含HTML编码实体的项目,我们没有找到匹配项,并且您的选择似乎丢失了。在本例中,选择第一个或第二个选项会导致选择适当的单选按钮 - 如果选择选项3或4,则返回到此屏幕时不会显示任何选择。
附加信息 - 此页面的字符集是UTF-8,如果这有什么不同。
事情我已经尝试在接下来的页面上的POST变量
- 用htmlspecialchars:结果,什么都没有,仍呈现实际的符号。
- htmlspecialchars对每个无线电选项的形式值:结果,我得到
&reg;
作为我的价值的一部分,显示不好。
感谢输入。我知道它与html编码有关,我只是没有尝试过正确的组合。我尝试了#1以上,然后#2以上#1仍在原地,并没有奏效。但只是简单的HTML编码的价值,而不是在岗位上再次工作很好。谢谢! – Tommy 2010-08-26 13:23:09