我有以下代碼:問題與雙引號和輸入
<input type="text" value="<?php echo $_GET['msg']; ?>">
此輸入自動填充這在前面的頁面writen名稱。 因此,如果用戶寫道:我喜歡「蘋果」和香蕉 輸入將被打破,因爲它會在雙引號後關閉標籤。 我知道我可以通過html來避免這個值,但我不想要這個,是否有另一個解決方案或者是否存在一個< < < EOD in html?
感謝
我有以下代碼:問題與雙引號和輸入
<input type="text" value="<?php echo $_GET['msg']; ?>">
此輸入自動填充這在前面的頁面writen名稱。 因此,如果用戶寫道:我喜歡「蘋果」和香蕉 輸入將被打破,因爲它會在雙引號後關閉標籤。 我知道我可以通過html來避免這個值,但我不想要這個,是否有另一個解決方案或者是否存在一個< < < EOD in html?
感謝
htmlentities()/htmlspecialchars()是這種情況的標準方式。你應該使用它。
您可以在通過電子郵件發送實體前對其進行解碼,或者使用html_entity_decode()對其進行其他操作。
您應該使用htmlspecialchars
功能,逃避HTML輸出:
<input type="text" value="<?php echo htmlspecialchars($_GET['msg']); ?>">
注意:您可能需要添加一些其它附加參數,如果你不使用ISO-8859-1
作爲charset;例如,用UTF-8:
<input type="text" value="<?php echo htmlspecialchars($_GET['msg'], ENT_COMPAT, 'UTF-8'); ?>">
一個或另一個功能會導致某種麻煩。
我想出了以下,以保持與字符:
<input type="text" value="<?php echo parseString($_GET['msg']); ?>">
<?php
function parseString($str) {
$result=str_replace('"','"',$str);
$result=str_replace("'","'",$result);
return $result;
}
我很好奇,爲什麼你創建的,而不是使用內置的'htmlspecialchars'此功能,如前面指出的(正確)答案。 – Charles 2012-02-15 19:04:01