HTML タグのエスケープ文字の変換
Go では、エスケープ文字を含む HTML タグの変換は、思ったほど簡単ではありません。 json.Marshal() は、「<」のような文字を含む文字列を簡単に変換できます。エスケープ シーケンス "u003chtmlu003e" に対して、json.Unmarshal() は逆の操作を行うための直接的かつ効率的な方法を提供しません。
strconv.Unquote() の使用
strconv.Unquote() 関数を使用して変換を実行できます。ただし、文字列を引用符で囲む必要があります。したがって、これらの囲み文字を手動で追加する必要があります。
import ( "fmt" "strconv" ) func main() { // Important to use backtick ` (raw string literal) // else the compiler will unquote it (interpreted string literal)! s := `\u003chtml\u003e` fmt.Println(s) s2, err := strconv.Unquote(`"` + s + `"`) if err != nil { panic(err) } fmt.Println(s2) }
出力:
\u003chtml\u003e <html></p> <p><strong>注:</strong></p> <p>HTML パッケージも使用できます。 HTML テキストのエスケープとアンエスケープ用。ただし、uxxxx 形式の Unicode シーケンスはデコードせず、decmal; のみをデコードします。または HH;.</p> <pre class="brush:php;toolbar:false">import ( "fmt" "html" ) func main() { fmt.Println(html.UnescapeString(`\u003chtml\u003e`)) // wrong fmt.Println(html.UnescapeString(`&#60;html&#62;`)) // good fmt.Println(html.UnescapeString(`&#x3c;html&#x3e;`)) // good }
出力:
\u003chtml\u003e <html> <html>
注 2:
文字列は二重引用符 ( ") は、コンパイラによって引用符で囲まれずに解釈された文字列です。引用符をそのまま使用した文字列を指定するには、次を使用します。バッククォートを使用して生の文字列リテラルを作成します。
s := "\u003chtml\u003e" // Interpreted string literal (unquoted by the compiler!) fmt.Println(s) s2 := `\u003chtml\u003e` // Raw string literal (no unquoting will take place) fmt.Println(s2) s3 := "\u003chtml\u003e" // Double quoted interpreted string literal // (unquoted by the compiler to be "single" quoted) fmt.Println(s3)
出力:
<html> \u003chtml\u003e
以上がGo で HTML エスケープ シーケンスを効率的に変換する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。