【问题标题】:Fetch content inside the <title> tag获取 <title> 标签内的内容
【发布时间】:2012-02-27 08:01:59
【问题描述】:

我正在使用 ASP.Net 4.0 开发一个 Web 应用程序。我正在尝试读取元数据以及标签内的文本。 我能够获取元标记值,但不能获取简单标记内的文本。如果它在元标记内,则返回一个值,否则不返回。但我想同时获取元标记和&lt;title&gt; 标记。

【问题讨论】:

  • 你的问题不清楚,可以举个例子解释一下吗?
  • 如果您尝试解析 HTML(我想这就是您正在做的事情),请尝试 Html Agility Pack,它可以为您节省大量工作。

标签: asp.net html metadata meta-tags


【解决方案1】:

确保您的 head 标签上有 runat="server",如下所示:

<head runat="server">

然后您将能够使用下面的代码访问元标记:

protected void Page_Load(object sender, EventArgs e)
{
  foreach (Control cnt in Page.Header.Controls)
  {
    if (cnt is HtmlMeta)
    {
      HtmlMeta meta = cnt as HtmlMeta;
      Response.Write("Meta tag name: " + meta.Name + ", content: " + meta.Content + ", http-equiv:" + meta.HttpEquiv + "<br />");          
    }

    if (cnt is HtmlTitle)
    {
      HtmlTitle tit = cnt as HtmlTitle;
      Response.Write("Title : " + tit.Text + "<br />");
    }
  }
}

【讨论】:

  • +1 勇敢地将你的变量命名为这样! ;-)
  • :)) 好吧,英语不是我的母语,我没有意识到这一点,假设我现在不能改变这一点,因为我会失去我的支持
  • 也许也只是我的肮脏思想,大声笑..无论如何不要担心我的支持会坚持下去,你的回答是正确的。
【解决方案2】:

您可以使用此方法来实现您想要的。

您必须将using System.Text.RegularExpressions; 添加到命名空间

protected string GetTagText(string source, string tag)
{
    var regexStr = string.Format("(?<=<{0}>).*(?=</{0}>)", tag);
    Regex regex = new Regex(regexStr, RegexOptions.IgnoreCase);
    if (regex.IsMatch(source))
    {
        return regex.Match(source).Value;
    }

    return null;
}

使用喜欢

GetTagText("<title>test title</title>", "title");

返回test title

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-30
    • 1970-01-01
    • 1970-01-01
    • 2019-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-15
    相关资源
    最近更新 更多