我正在尋找一個textarea的白名單,該書名將用於書名。我想要允許的唯一字符是字母數字,空格,連字符,下劃線,句點和<br>
標記。理想情況下,任何其他特殊字符都應該轉換爲它們的特性。如果有幫助,該頁面使用php,html,javascript和jquery。有人有主意嗎??在textarea的html textarea白名單
例輸入:
<textarea>
I have this book called Sample- a Fake Book.
</textarea>
我正在尋找一個textarea的白名單,該書名將用於書名。我想要允許的唯一字符是字母數字,空格,連字符,下劃線,句點和<br>
標記。理想情況下,任何其他特殊字符都應該轉換爲它們的特性。如果有幫助,該頁面使用php,html,javascript和jquery。有人有主意嗎??在textarea的html textarea白名單
例輸入:
<textarea>
I have this book called Sample- a Fake Book.
</textarea>
如果這與安全性有任何關係,即確保數據總是安全顯示,那麼這必須在服務器端完成。
除了<br>
標籤,只要HTML編碼應該做你想要的。
也許最好的辦法是使用htmlentities,然後把<br>
的背:
$encoded_text = htmlentities($input_text);
// replace the encoded <br>'s with the original <br>'s
$final_text = str_replace(htmlentities("<br>"), "<br>", $encoded_text);
的另一種方式,試圖讓這種行爲並仍使用htmlentities
是一個佔位符代替<br>
標籤,運行通過htmlentities
,然後將其替換回來。沿線的東西:
$br_placeholder = "XX_BR_PLACEHOLDER_XX";
$text_with_placeholders = str_replace("<br>", $br_placeholder, $input_text);
$text_with_htmlentities = htmlentities($text_with_placeholders);
$final_text = str_replace($br_placeholder, "<br>", $text_with_htmlentities);
謝謝!第一種將
標籤帶回來的方法效果很好! –
cbr0wn
如果你希望允許非字母數字字符,但讓他們轉換成ヶ輛,那麼白名單是不是你所需要的。您可以:
$('<div/>').text(string).html()
把戲做同樣的事情在textarea上使用onkeyup處理程序來檢測什麼時候輸入了內容。然後,您檢索textarea的內容和檢查「非法」字符:
<script type="text/javascript">
function textFilter() {
this.value = this.value.replace(/[^a-zA-Z0-9 \-_\.]/, '');
}
</script>
<textarea onkeyup="textFilter();"></textarea>
不知道你是什麼意思「標籤」,所以這個功能將無法處理的「標籤」。請注意,這只是刪除非法字符,並不會將它們轉換爲字符實體。
這將刪除字符。它們應該被轉換爲html實體 –
它也不會阻止人們通過自定義帖子提交惡意內容。 – jduncanator
你到目前爲止嘗試過什麼?你跑哪個具體問題?什麼是「標籤」字符? – hakre
我用@orip第一種方法使用htmlentities然後把
的帶回來。爲我工作得很好! – cbr0wn