【问题标题】:Pregmatch image url with php from meta tag in instagram headerPreg_match 图像 url 与来自 instagram 标题中元标记的 php
【发布时间】:2013-09-21 08:25:09
【问题描述】:

我正在尝试使用 php 从 Instagram 网址中抓取图片网址。图片网址似乎包含在页面顶部的元标记中,如下所示:

<meta property="og:image" content="http://distilleryimage10.ak.instagram.com/9e4360c6220411e38abf22000a1f9bf5_7.jpg" />

从此我想返回内容部分,例如http://distilleryimage10.ak.instagram.com/9e4360c6220411e38abf22000a1f9bf5_7.jpg

我需要为多个图像执行此操作,因此即使 url 发生更改,我也需要提取此图像。

我目前的代码是

$page = file_get_contents('http://instagram.com/p/efH-NVOTAy/#');
preg_match("/og:image/", $page, $matches);
print_r($matches);

这将打印 Array ( [0] => og:image )

只要它匹配 'og:image' 就可以工作,并向我确认它可以在从 file_get_contents 返回的数据中找到这个字符串,但我不确定如何实现从这一行返回 url 的飞跃?

【问题讨论】:

    标签: php regex preg-match instagram


    【解决方案1】:

    尝试以下方法:

    /og:image"\s*content="([^"]+)"/
    

    这将查找og:image,然后在其后查找content,如果找到,则将值(双引号"内的任何内容)捕获到捕获组1中。

    所以你应该收到一个包含两个元素的匹配数组,第二个是 URL。

    Regex101 Demo

    警告:一般不要使用正则表达式来解析 HTML,始终使用 HTML 解析器。

    【讨论】:

    • 你告诉他怎么做,然后告诉他不要这样做。太棒了。
    • 这给了我这个错误警告:输入中的意外字符:'\' (ASCII=92) state=1 in /home5/bqdevcom/public_html/ssopledge/twitterSearch.php on line 34 解析错误:语法错误,第 34 行 /home5/bqdevcom/public_html/ssopledge/twitterSearch.php 中的意外 T_STRING
    • @pguardiario 当你这样看的时候听起来很奇怪:)
    • @BenPaton 不要使用双引号 " 来引用 preg_match 中的字符串,否则您将不得不在正则表达式中转义它们。请改用单引号'
    • 谢谢,是的,哎呀,我只是发现当我将它用单引号括起来时它可以工作。感谢您的帮助。
    猜你喜欢
    • 2021-10-16
    • 2015-03-26
    • 2016-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-28
    • 1970-01-01
    • 2019-07-22
    相关资源
    最近更新 更多