【问题标题】:What is the best way to escape HTML-specific characters in a string (PowerShell)?在字符串 (PowerShell) 中转义 HTML 特定字符的最佳方法是什么?
【发布时间】:2012-04-10 02:03:49
【问题描述】:
我正在使用 PowerShell 脚本生成一些简单的 HTML,并且我想转义结果 HTML 中使用的字符串(因为它们可以包含一些特定于 HTML 的符号)。
例如:
$a = "something <somthing else>";
应转换为以下内容:
"something <something else>"
是否有任何内置函数?
【问题讨论】:
标签:
html
powershell
html-escape-characters
【解决方案1】:
System.Web 中有一个类可以做到这一点。
Add-Type -AssemblyName System.Web
[System.Web.HttpUtility]::HtmlEncode('something <somthing else>')
你甚至可以走另一条路:
[System.Web.HttpUtility]::HtmlDecode('something <something else>')
【解决方案2】:
从 PowerShell 3.0 开始,使用 [System.Net.WebUtility] 进行四种常见操作中的任何一种:
[System.Net.WebUtility]::HtmlEncode('something <somthing else>')
[System.Net.WebUtility]::HtmlDecode('something <somthing else>')
[System.Net.WebUtility]::UrlEncode('something <somthing else>')
[System.Net.WebUtility]::UrlDecode('something+%3Csomthing+else%3E')
[System.Web.HttpUtility]::HtmlEncode 是 .NET 4.0(PowerShell 2.0 或更早版本)之前的常用方法,但需要加载 System.Web.dll:
Add-Type -AssemblyName System.Web
从 .NET 4.0 (PowerShell 3.0) [System.Web.HttpUtility]::HtmlEnocde 开始内部调用 [System.Net.WebUtility]::HtmlEncode,因此省略中间人 (System.Web.dll) 是有意义的。