【问题标题】: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 &lt;something else&gt;"

是否有任何内置函数?

【问题讨论】:

    标签: 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 &lt;something else&gt;')
    

    【讨论】:

    【解决方案2】:

    从 PowerShell 3.0 开始,使用 [System.Net.WebUtility] 进行四种常见操作中的任何一种:

    [System.Net.WebUtility]::HtmlEncode('something <somthing else>')
    [System.Net.WebUtility]::HtmlDecode('something &lt;somthing else&gt;')
    [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) 是有意义的。

    【讨论】:

      【解决方案3】:

      $SomeEmail = "user@domain.com"

      $EncodedString = ([uri]::EscapeDataString($SomeEmail))

      写入主机 $EncodedString

      Using [uri] ENCODING MAKES IT MUCH EASIER

      【讨论】:

      • 请不要将代码和错误消息作为图像发布,而是以代码格式的文本发布,因为我们都不能复制、粘贴和运行图像。有关这方面的更多信息,请查看为什么我们Discourage screenshots of code and/or errors
      猜你喜欢
      • 2021-11-16
      • 1970-01-01
      • 2017-04-04
      • 2011-05-31
      • 1970-01-01
      • 1970-01-01
      • 2016-06-21
      • 2021-05-01
      • 1970-01-01
      相关资源
      最近更新 更多