0

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

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

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

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

4

5 回答 5

1

您的正则表达式<meta|name="description|".*content|="([^"]+)">已损坏,这意味着:

  • <meta
    或者
  • name="description
    或者
  • "后跟任何内容,然后是content
    OR
  • ="后跟至少一个不"跟在后面的字符">

警告!

让我说用正则表达式解析 HTML 是一个非常糟糕的主意

用于培训目的的正则表达式替代方案

但是如果你想尝试一些训练,开始改进这个:

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

这是不区分大小写的,并且执行您认为的操作。

假阴性

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

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

或者

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

或者

<meta content="foo bar baz" name="description">
于 2012-09-23T12:17:43.753 回答
1

检查此php 函数以轻松获取所有元详细信息,包括描述。

于 2015-03-07T11:02:21.080 回答
1

你可以像这样使用它:

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

也适用于压缩的 html 代码。

于 2013-09-23T06:37:15.157 回答
1

i在最后一个#.

像这样:

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

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

于 2012-09-23T08:55:48.523 回答
0
<meta\s+(?=[^>]*name\s*=\s*("|')description\1)[^>]*content\s*=\s*("|')(.*?)\2[^>]*>
于 2019-09-13T09:32:15.593 回答