【问题标题】:php - how to get meta tags from url [duplicate]php - 如何从 url 获取元标记 [重复]
【发布时间】:2021-03-19 02:16:09
【问题描述】:

我想从 url 获取元标记。如果存在数据属性值,则无法正确提取。如何更改正则表达式?

HTML 代码

1. <meta property="og:title" content="111">
2. <meta data-one="true" property="og:description" content="222">
3. <meta data-two="true" property="og:image" content="333">
4. <meta data-three="true" data-another="true" property="og:url" content="444">

PHP 代码

preg_match_all('~<\s*meta\s*property="(og:[^"]+)"\s*content="([^"]*)~i', $html, $matches);

结果

Array(
  [0] => og:title
)

希望结果

Array(
  [0] => og:title,
  [1] => og:description,
  [2] => og:image,
  [3] => og:url
)

【问题讨论】:

    标签: php regex preg-match-all meta


    【解决方案1】:

    问题在于第二个和第三个\s* 表示匹配零个或多个空格。但是,在第二种情况下,您要匹配 \b.*\b、单词边界(meta 的结尾),然后是任何内容,然后是新的单词边界(property 的开头)。对于第三种情况,需要\s.*\b,因为" 不是单词边界,因此您的固定正则表达式为:

    preg_match_all('~<\s*meta\b.*\bproperty="(og:[^"]+)"\s.*\bcontent="([^"]*)~i', $html, $matches);
    

    the example here

    【讨论】:

      猜你喜欢
      • 2012-03-03
      • 1970-01-01
      • 2017-08-18
      • 1970-01-01
      • 2012-06-23
      • 1970-01-01
      • 2023-03-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多