2011-08-19 5 views
1

저는 책 제목에 사용되는 텍스트 영역의 화이트리스트를 찾고 있습니다. 허용하려는 문자는 영숫자, 공백, 하이픈, 밑줄, 마침표 및 <br> 태그입니다. 다른 특수 문자는 이상적으로 htmlentities로 변환되어야합니다. 페이지가 PHP, html, javascript 및 jquery를 사용하면 도움이됩니다. 누구든지 어떤 아이디어가 있습니까 ?? 텍스트 영역에서html 텍스트 영역 허용 목록

예 입력 :

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

지금까지 시도한 내용은 무엇인가요? 어떤 구체적인 문제가 있었습니까? 그리고 "태그"문자는 무엇입니까? – hakre

+0

나는 htmlentities를 사용하여
을 다시 사용하는 @orip 첫 번째 방법을 사용했습니다. 나를 위해 잘 일했다! – cbr0wn

답변

1

보안과 관련이있는 경우, 즉 데이터를 항상 안전하게 표시 할 수 있는지 확인하려면 서버 측에서 수행해야합니다.

<br> 태그를 제외하고는 HTML 인코딩만으로 원하는 작업을 수행 할 수 있습니다.

$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>의 뒷면을 가지고하는 것입니다 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

는 영숫자가 아닌 문자를 허용 할 있지만이를 htmlentities로 변환하는 경우, 다음 화이트리스트는 당신이 필요하지 않습니다. 당신은 할 수 있습니다

  • 사용 자바 스크립트 정규 표현식은
  • jQuery를이
  • 당신의 PHP 코드
  • 에 서버 측에서이를 변환하려면 $('<div/>').text(string).html() 트릭을 사용하여 같은 일을 할 수 있도록 제출하기 전에 <>와 &를 교체하려면
0

텍스트 영역에 onkeyup 처리기를 사용하여 무언가가 입력되었는지 감지합니다. 그런 다음 텍스트 영역의 콘텐츠를 검색하여 '불법'문자를 확인 :

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

</script> 

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

확실하지 당신이 "태그를"무슨 뜻인지, 그래서이 기능은 "태그"를 처리하지 않습니다. 이것은 단순히 잘못된 문자를 제거하고 문자로 변환하지 않습니다.

+0

문자를 제거합니다. 그들은 HTML 엔터티로 변환해야합니다 –

+0

또한 사용자 지정 게시물을 통해 악성 콘텐츠를 제출하는 사람들을 막지는 않습니다. – jduncanator