>백엔드 개발 >Golang >HTML 템플릿에서 개행 문자를 올바르게 렌더링하는 방법은 무엇입니까?

HTML 템플릿에서 개행 문자를 올바르게 렌더링하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-10-30 20:02:02745검색

How to Render Newlines Correctly in HTML Templates?

줄바꿈을 사용하여 html/템플릿에서 이스케이프 문제 극복

HTML 템플릿에서 n으로 인코딩된 줄바꿈은 HTML 엔터티(< br>) 실제 줄 바꿈이 아닌 이는 n 문자가 신뢰할 수 있는 데이터의 일부로 허용되지 않고 템플릿에 의해 이스케이프될 때 발생합니다.

해결책: 삭제 및 사전 이스케이프

이 문제를 해결하려면, 다음 단계를 따르세요.

  1. 텍스트를 삭제하세요. template.HTMLEscape()를 사용하여 텍스트 파일에서 잠재적으로 유해한 문자를 제거하세요.
  2. 대체 줄 바꿈: 정리 후 모든 "n"을 "
    "로 바꿉니다.

  3. 사전 이스케이프된 데이터 사용: 정리되고 대체된 텍스트를 템플릿에 전달합니다. 안전한 HTML 조각을 캡슐화하는 template.HTML로.
  4. 구현 예:

    다음 코드는 프로세스를 보여줍니다.

    <code class="go">package main
    
    import (
        "html/template"
        "os"
        "strings"
    )
    
    const page = `<!DOCTYPE html>
    <html>
      <head>
      </head>
      <body>
        <p>{{.}}</p>
      </body>
    </html>`
    
    const text = `first line
    <script>dangerous</script>
    last line`
    
    func main() {
        t := template.Must(template.New("page").Parse(page))
        safe := template.HTMLEscapeString(text)
        safe = strings.Replace(safe, "\n", "<br>", -1)
        t.Execute(os.Stdout, template.HTML(safe))
    }</code>

    이 코드는 텍스트를 삭제하고 개행 문자를
    로 대체한 후 사전 이스케이프 처리된 데이터로 템플릿에 전달합니다. 렌더링된 결과는 문제를 피하지 않고 의도한 대로 줄 바꿈을 올바르게 표시합니다.

    위 내용은 HTML 템플릿에서 개행 문자를 올바르게 렌더링하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.