【问题标题】:What is the regex code for meta description [duplicate]什么是元描述的正则表达式代码[重复]
【发布时间】:2012-09-15 01:53:33
【问题描述】:

我正在寻找元描述标签的正则表达式代码。

#<meta|name="description|".*content|="([^"]+)"># <- 

这就是我所拥有的,但它与大写字母不匹配,因为我发现有些标签就像META DESCRIPTION = 等。

是否有新代码或方法可以更改此代码以匹配大写字母内容?

【问题讨论】:

  • 该正则表达式与您的想法不符。这里的问题不在于大写字母。例如,它也会匹配字符串“foocontent”
  • 你的正则表达式的问题(不算它有一堆OR)是meta并不总是必须这样格式化......可以有空格,换行符,不同的报价......如果是为了报废,我建议收集所有元标记然后处理它 - 就像这样:~&lt;meta[^&gt;]+&gt;~is

标签: php regex


【解决方案1】:
<meta\s+(?=[^>]*name\s*=\s*("|')description\1)[^>]*content\s*=\s*("|')(.*?)\2[^>]*>

【讨论】:

  • 嗨,也许你可以添加一个小解释来改进你的答案。
【解决方案2】:

查看此php function 以轻松获取包括描述在内的所有元详细信息。

【讨论】:

    【解决方案3】:

    你可以这样使用它:

    /<meta[^>]*name=[\"|\']description[\"|\'][^>]*content=[\"]([^\"]*)[\"][^>]*>/i
    

    也适用于压缩的 html 代码。

    【讨论】:

    • 您可能需要考虑以下事实:content= 后面可能有双引号或单引号,因此正则表达式将变为 /&lt;meta[^&gt;]*name=[\"\']description[\"\'][^&gt;]*content=[\"\'](.*?)[\"\'][^&gt;]*&gt;/i
    【解决方案4】:

    你的正则表达式 &lt;meta|name="description|".*content|="([^"]+)"&gt; 坏了,这意味着:

    • &lt;meta
    • name="description
    • " 后跟 content
      OR
    • =" 后跟至少一个不是" 的字符后跟"&gt;

    警告!

    让我说parsing HTML with regular expressions is a very bad idea

    用于训练目的的正则表达式替代

    但是,如果您想尝试一些训练方法,请开始改进:

    #&lt;meta name="description" content="([^"]+)"&gt;#i

    不区分大小写,按照您的想法执行。

    假阴性

    注意它不会匹配这样的有效元素:

    <meta name="description"      content="foo bar baz">
    

    <meta
       name="description"
       content="foo bar baz">
    

    <meta content="foo bar baz" name="description">
    

    【讨论】:

    • 好吧,至少可以通过用\s+ 替换所有空格字符来缓解空格的问题。否则,很好的答案!
    • 如果是 &lt;meta name='description' ...&gt; 呢?甚至&lt;meta name=description ...&gt;(这是正确的html语法)
    【解决方案5】:

    在最后一个# 之后添加标志i

    像这样:

    #<meta|name="description|".*content|="([^"]+)">#i
    

    这将告诉您的正则表达式不区分大小写。阅读更多关于标志的信息here

    【讨论】:

    • 我不知道。这似乎是错误的。我的意思是我们为什么要搜索 &lt;metaname...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-21
    相关资源
    最近更新 更多