我使用PowerShell脚本生成一些简单的HTML,并且我想要转义结果HTML中使用的字符串(因为它们可以包含一些HTML特定的符号)。在字符串(PowerShell)中转义HTML特定字符的最佳方法是什么?
例如:
$a = "something <somthing else>";
应转换为以下几点:
"something <something else>"
是否有任何内置的功能是什么?
我使用PowerShell脚本生成一些简单的HTML,并且我想要转义结果HTML中使用的字符串(因为它们可以包含一些HTML特定的符号)。在字符串(PowerShell)中转义HTML特定字符的最佳方法是什么?
例如:
$a = "something <somthing else>";
应转换为以下几点:
"something <something else>"
是否有任何内置的功能是什么?
有一个类将在System.Web中做到这一点。
Add-Type -AssemblyName System.Web
[System.Web.HttpUtility]::HtmlEncode('something <somthing else>')
你甚至可以走另外一条道路:
[System.Web.HttpUtility]::HtmlDecode('something <something else>')
使用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
)。
这就是我正在寻找的,谢谢! – Kel 2012-04-10 02:20:18
另一种方法是使用'[System.Security.SecurityElement] :: Escape($ textToEscape)''。存在一些差异;请参阅:https://www.roelvanlisdonk.nl/2009/09/23/you-should-use-system-security-securityelement-escape-in-c-to-escape-special-characters-in-xml-and-没有系统的web-httputility-的HTMLEncode /。 – JohnLBevan 2017-04-10 14:22:53