2010-08-10 7 views
0

와 나는 데이터베이스에서 일부 사용자가 제출 한 HTML 코드를 취이 기능을 가지고, 일반 텍스트로 출력 할 수 있습니다. 내 질문에 '깊이'가 부족하다는 것을 알고 있지만 이것이 최선의 방법입니까? 또는 출력 된 서식을 구문 분석 (예 : 자바 스크립트 삽입)하거나 일부 컴퓨터에서 제대로 출력하지 못하는 등의 문제가 있습니까?서식 HTML 코드는 PHP

감사합니다.

편집 : 나는 새로운 (관련) 질문이 : 나는 highlight_string()를 사용하여 문자열을 강조하고 싶습니다. 그러나 제대로 작동하지 않을 수 있습니다. 나는 라고 생각한다. 나는 왜 그것을 이해하지만, 나는 이것을 어떻게 수정할 수 있는지 모른다.

function Code($code) 
{ 
    return "<pre><code>".highlight_string(nl2br(htmlspecialchars($code)))."</code></pre>"; 
} 

여기에서 알 수 있듯이 나는 그것에 대해 highlight_string()을 사용하고 있습니다. 그러나 출력이 전혀 강조 표시되지 않고 문자 엔터티 (&lt;, '>'등)로 출력됩니다. 내가 좋아하는 뭔가 함수 순서를 개편하는 경우 :

return "<pre><code>".nl2br(htmlspecialchars(highlight_string($code)))."</code></pre>";

나는 문자 엔터티가 출력되지 않습니다 때, 캐릭터 라인은 여전히 ​​강조되지는 사실을 알게 될 것입니다. 명확히하기 위해, 나는 적용된 텍스트 색상에 영향을 줄 CSS 스타일이 없습니다. 또한, 내 PHP 설정을 확인했습니다 거기에 명확하게 강조 표시 색상이 있습니다.

답변

3

아니요, 괜찮습니다. htmlspecialchars()은 HTML 컨트롤 문자를 해당 엔티티 (< =>&lt; 등)로 변환하므로 아무 것도 삽입 할 수 없습니다.

+0

우수 감사합니다. 질문에 여분의 비트도 추가했습니다. :) – Jack

+0

''pre'' 및'code' 블록 안에 있기 때문에 @Jack'highlight_string()'이 작동하지 않습니다. HTML 서식을 지원하지 않습니다. –

+0

'return "".nl2br (htmlspecialchars (highlight_string ($ code))). "을 읽기 위해 Code() 함수를 변경했습니다." "; - 슬프게도, 여전히 작동하지 않습니다. 나는 또한'highlight_string()'함수의 깊이를 '섞어'시도했다. 특이한 '1'이 출력되고 있습니다. 스크린 샷을보십시오. http://cl.ly/603f491d7402e06125be - 그들은 확실히 데이터베이스 데이터에 없습니다. – Jack