2011-08-28 71 views
3

我目前使用jQuery檢查textarea的具有HTML在它:(我將繼續使用這個)如何使用PHP檢查textarea的值是否包含HTML?

if ($('textarea#newMessage').val().match(/<(\w+)((?:\s+\w+(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)>/)) { 
     $('textarea#newMessage').focus(); 
     $('#error').html('Error: HTML is not aloud. Please remove all of the HTML in your message to continue.') 
     .click(function() { $('#newMessage').focus(); }) 
     .stop(true,true) 
     .fadeIn(800) 
     .delay(1500) 
     .fadeOut(200); 
     return false; 
    } 

可是,我該如何使用PHP做同樣的事情?如果有人禁用了JavaScript,他們可以輕鬆地在HTML中提交表單。 PHP也有辦法做到這一點嗎?

+3

見http://stackoverflow.com/questions/5732758/detect-html-tags-in-a-string – Buddy

+1

一個簡單的表達是'/ <.*?> /' – Herbert

回答

1

這將捕獲標籤並沒有文字。

$textareaname = (isset($_POST['textareaname'])) 
       ? $_POST['textareaname'] 
       : ''; 

if ($textareaname !== strip_tags($_POST['textareaname'])) 
{ 
    // contains tags 
} 

elseif (trim($textareaname) === '') 
{ 
    // textarea is empty 
} 

else 
{ 
    // OK! do something 
} 

注:

  1. 如果表格沒有textarea的東西送, $_POST['textareaname']將不存在,當你 嘗試使用它PHP將拋出一個錯誤。
  2. 如果有人發送任何東西,但空間trim()將捕獲它。
+0

我有點兒有點兒有錯誤信息。我會接受你的答案,但我寧願有錯誤消息,好像他們沒有啓用JavaScript,他們可能會試圖繞過我的jQuery檢查,這意味着即使使用PHP也應該顯示錯誤。但是非常感謝你告訴我關於'trim()'! :)另外,我可能不想放棄jQuery方法,因爲我將使用AJAX提交表單。 – Nathan

+0

@Nathan:根據你的評論,我更新了代碼來檢查標籤和空白textareas,只有空格。 – Herbert

+0

非常感謝! :)變量中的「?」和其他內容會做什麼?它是'isset()'的一部分嗎? – Nathan

1

試試這個:

if(preg_match("/<[^>]*>/", $_POST['textareaname'])){ 
    //contains html tags 
} else { 
    //dosomething... 
} 
+0

請問這個檢查textarea的是空的? (我也需要這個)如果是這樣也謝謝。 – Nathan

+0

edited ..刪除html標籤並檢查textarea是否爲空。 – Kakashi

+0

這將刪除它們或顯示錯誤,如果它有HTML標籤嗎? – Nathan

1

使用的preg_match()你已經得到了正則表達式。順便說一句:與其「大聲」你大概的意思是「允許」;)

+0

是的,我的意思是「允許」LOL。謝謝。 – Nathan

4
if ($text != strip_tags($text)) 
    // text contains html 

看到strip_tags

+0

感謝您的回答。 – Nathan

+0

+1實際回答問題。 – Herbert

1

首先,你可以通過preg_match

使用完全相同的正則表達式再說了,你想要限制HTML以避免更改代碼結構中的任何內容。
因此,您可以使用htmlspecialchars以純文本形式打印HTML。
但是,如果你真的需要檢查,他們都存在,你可能只是檢查符號<>,可以打破你的標記由preg_match('~[<>]~',..)或者只是strpos「ES

+0

是的,以及我限制HTML的原因是因爲textarea是一個回覆的事情,當你回覆它時,它會被添加到數據庫中,併發送一封電子郵件。我不想在電子郵件中添加額外的HTML。 (有人可以很容易地用'

  • 11. PHP - 檢查函數是否包含
  • 12. 檢查HTML中是否包含PHP中的JavaScript
  • 13. 如何檢查DataTable是否包含DataRow?
  • 14. 如何檢查NSString是否包含'%'?
  • 15. 如何檢查url是否包含「main.php」
  • 16. 如何檢查CGContext是否包含點?
  • 17. 如何檢查html是否包含與iMacros的某個數字
  • 18. 檢查arraytype列是否包含空值
  • 19. 檢查arraylist是否只包含空值
  • 20. 檢查NSMutableArray是否包含給定值
  • 21. 如何檢查布爾值列表是否包含值?
  • 22. 如何檢查數組以查看它是否包含零值?
  • 23. 檢查是否包含jQuery
  • 24. 檢查是否行包含/ *
  • 25. 我如何檢查數組是否包含特定的鍵php
  • 26. 檢查數組中是否包含php中的值
  • 27. PHP:檢查對象是否包含數組中的值
  • 28. 如何檢查輸入是否包含使用javascript的isbn
  • 29. 如何檢查對象是否包含使用Jasmine的項目
  • 30. MySQL:使用union檢查兩列是否包含eachother的值?