2011-08-19 109 views
1

我正在尋找一個textarea的白名單,該書名將用於書名。我想要允許的唯一字符是字母數字,空格,連字符,下劃線,句點和<br>標記。理想情況下,任何其他特殊字符都應該轉換爲它們的特性。如果有幫助,該頁面使用php,html,javascript和jquery。有人有主意嗎??在textarea的html textarea白名單

例輸入:

<textarea> 
I have this book called Sample- a Fake Book.  
</textarea> 
+0

你到目前爲止嘗試過什麼?你跑哪個具體問題?什麼是「標籤」字符? – hakre

+0

我用@orip第一種方法使用htmlentities然後把
的帶回來。爲我工作得很好! – cbr0wn

回答

1

如果這與安全性有任何關係,即確保數據總是安全顯示,那麼這必須在服務器端完成。

除了<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); 
+0

謝謝!第一種將
標籤帶回來的方法效果很好! – cbr0wn

1

如果你希望允許非字母數字字符,但讓他們轉換成ヶ輛,那麼白名單是不是你所需要的。您可以:

  • 使用JavaScript和正則表達式來提交
  • 讓jQuery的使用$('<div/>').text(string).html()把戲做同樣的事情
  • 將它們轉換在服務器端在你的PHP代碼
  • 之前更換<,>和&
0

在textarea上使用onkeyup處理程序來檢測什麼時候輸入了內容。然後,您檢索textarea的內容和檢查「非法」字符:

<script type="text/javascript"> 
    function textFilter() { 
     this.value = this.value.replace(/[^a-zA-Z0-9 \-_\.]/, ''); 
    } 

</script> 

<textarea onkeyup="textFilter();"></textarea> 

不知道你是什麼意思「標籤」,所以這個功能將無法處理的「標籤」。請注意,這只是刪除非法字符,並不會將它們轉換爲字符實體。

+0

這將刪除字符。它們應該被轉換爲html實體 –

+0

它也不會阻止人們通過自定義帖子提交惡意內容。 – jduncanator