我對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