2014-10-10 17 views
0

我正在使用包含blah^s字符的數據庫信息(我用^替換了',所以我可以確定該行在哪裏有撇號)。我正在檢索並使用preg_replace將撇號放回字符串中。它的所有工作都很好,直到我嘗試使用jquery更新輸入文本字段。從php到輸入字段的jQuery撇號

$name = preg_replace('/(\^)/', ' ', '\''); 
$name = "<input type='text' size='20' id='2' name='2' value='$name'>&nbsp;"; 

我是JSON編碼它與我所有的其他數據罰款。

$json = array(
'name' => $name 
); 
echo json_encode($json); 

這返回,在控制檯利用jquery,「等等」。 而不是在我的輸入文本字段中的「等等」,這是我所需要的。

有沒有人有任何想法?

+0

我真的不知道,所以只是一種猜測,因爲我曾與德國突變類似的問題(或者是不是真的umlaute英語以及?)。我不得不'utf8_encode'我的字符串。也許這與你的特殊角色一樣。 – lexith 2014-10-10 20:45:39

+0

看看生成的HTML。您正在使用'''分隔屬性值。你正在產生類似'value ='blah's''的東西。該值在'h'(用於HTML)後結束。相反,您必須爲'''使用HTML實體。 – 2014-10-10 20:46:43

+0

關於html編碼的任何建議? – Medi0cr3 2014-10-10 20:47:44

回答

1

看看生成的HTML。您正在使用'來分隔屬性值。那麼,你是喜歡生成

value='blah's' 

事情正如你所看到的,價值h後結束。

您必須改用'的HTML實體。你可以做到這一點與htmlentities

echo htmlentities($str, ENT_QUOTES); 

htmlspecialchars

echo htmlspecialchars($str, ENT_QUOTES); 
+0

完美,謝謝。我現在也在php手冊中檢查了這一點。非常感謝。 – Medi0cr3 2014-10-10 20:51:00

+0

如果字符串與HTML文檔具有相同的字符集,則可以使用['htmlspecialchars()'](http://php.net/manual/en/function.htmlspecialchars.php)來代替。不同之處在於'htmlentities()'將編碼所有具有相同名稱的HTML實體的字符,即使是那些在HTML中沒有特殊含義的字符(例如'&hellip;','•'等)。如果您的HTML字符集與原始字符串相同,則完成所有這些工作是必需的。 – 2014-10-10 20:57:59

+1

@Jordan:好點,我在回答中加了'htmlspecialchars()'。 – 2014-10-10 21:03:09