元描述的正则表达式代码是什么

时间:2012-09-23 08:45:16

标签: php regex

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

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

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

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

5 个答案:

答案 0 :(得分:1)

在您的上一个i之后添加标记#

像这样:

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

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

答案 1 :(得分:1)

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

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

警告!

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

用于培训目的的正则表达式

但是如果你想尝试一些培训,那就开始改进了:

#<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">

答案 2 :(得分:1)

你可以像这样使用它:

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

也适用于压缩的html代码。

答案 3 :(得分:1)

选中此php function可轻松获取包含说明的所有元数据。

答案 4 :(得分:0)

<meta\s+(?=[^>]*name\s*=\s*("|')description\1)[^>]*content\s*=\s*("|')(.*?)\2[^>]*>