2011-08-06 5 views
1

양식이 있습니다. 사용자가 데이터를 제출하면 내 스크립트는텍스트에서 태그를 제거 하시겠습니까?

$text1 = strip_tags($text); 

으로 텍스트를 확인한 다음 데이터베이스에 데이터를 삽입합니다. 그러나 사용자가 "내가 완전히 < 3이 웹 사이트"와 같은 내용을 제출하면 "나는 완전히"삽입합니다. 이 문제를 어떻게 해결할 수 있습니까?

당신은 그들을 제거하는 대신 그 문자를 이스케이프 할 필요가

+2

* 한숨 * 'strip_tags'을 남용하는 것처럼 들립니다. – Lekensteyn

답변

3

(필자는 태그를 제거해야합니다). 이를 달성하기 위해 htmlspecialchars 함수를 사용할 수 있습니다. 예 :

$new = htmlspecialchars("<a href='test'>Test</a>", ENT_QUOTES); 
echo $new; // &lt;a href=&#039;test&#039;&gt;Test&lt;/a&gt; 

특수 문자를 HTML 엔터티로 이스케이프하여 올바르게 표시합니다.

+0

하지만 태그를 제거해야합니다 ... – Akos

+1

왜 다른 사람처럼 할 수 없으며 HTML 이스케이프 처리 된 항목을 사용할 수 없습니까? –

0

태그를 해당 명칭으로 대체 할 수 있습니다. 삭제하지 마십시오. 사용

htmlspecialchars()

0

잘 모르겠어요 이 작업을 수행하려면,하지만 당신은

$stripped = str_replace(array('<', '>'), '', $text); 

을 수행하여 <>을 제거 할 수 있지만 내가 문자열을 탈출 제안 이와 같이 대신

$escaped = htmlspecialchars($text); 
// or 
$escaped = htmlentities($text); 
0

swer는 htmlentities을 다른 답변에 언급 된대로 사용하는 것이므로 태그를 제거하기 전에 항상 $text을 사전 처리하는 배열을 사용할 수 있습니다. 아마 적절한 결과를 생각해야하는, 그래서 -

$search = array('<3', ':<'); 
$replace = array('&lt;3', ':&lt;'); 

echo strip_tags(str_replace($search, $replace, $text)); 

물론, 당신은 당신의 배열은 이러한 특별한 경우의 새로운 인스턴스를 얻을 때마다 업데이트해야 할 것입니다.

관련 문제