2010-04-01 83 views
0

我有以下代碼:問題與雙引號和輸入

<input type="text" value="<?php echo $_GET['msg']; ?>"> 

此輸入自動填充這在前面的頁面writen名稱。 因此,如果用戶寫道:我喜歡「蘋果」和香蕉 輸入將被打破,因爲它會在雙引號後關閉標籤。 我知道我可以通過html來避免這個值,但我不想要這個,是否有另一個解決方案或者是否存在一個< < < EOD in html?

感謝

回答

2

您應該使用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'); ?>"> 
1

一個或另一個功能會導致某種麻煩。

我想出了以下,以保持與字符:

<input type="text" value="<?php echo parseString($_GET['msg']); ?>"> 
<?php 
function parseString($str) { 
    $result=str_replace('"','&quot;',$str); 
    $result=str_replace("'","&#39;",$result); 
    return $result; 
} 
+0

我很好奇,爲什麼你創建的,而不是使用內置的'htmlspecialchars'此功能,如前面指出的(正確)答案。 – Charles 2012-02-15 19:04:01