-3

我想弄清楚这一点,我想从变量或任何 php 代码中回显信息,任何'http://vine.co/v/'line 3都可以帮助我吗?

我的代码:

<?php

$vine = file_get_contents('http://vine.co/v/', false, $test);
$test = "haiKqBFA9Yw";
preg_match('/property="og:image" content="(.*?)"/', $vine, $matches);
$url = $matches[1];
$url = str_replace( 'https://', 'http://', $url );
$url = str_replace( 'versionId=', '', $url );
$img = $url;
$url = substr($img, 0, strpos($img, "?"));
echo $url;

它只是返回$test没有定义的变量。

4

1 回答 1

1

不要使用正则表达式解析 HTML。

从给定 url 返回所有打开的图元的简单函数:

function getUrlOpenGraphMetas($url) {
    $dom = new DOMDocument;
    @$dom->loadHTMLFile($url);
    $xpath = new DOMXPath($dom);
    $metas = array();
    if (!$entries = $xpath->query('//html/head/meta[starts-with(@property, "og:")]')) return $metas;
    foreach ($entries as $entry) $metas[$entry->getAttribute('property')] = $entry->getAttribute('content');
    return $metas;
}

利用:

$metas = getUrlOpenGraphMetas('https://vine.co/v/haiKqBFA9Yw');
$img = $metas['og:image'];
if (($pos = strpos($img, '?')) !== false) $img = substr($img, 0, $pos);
$img = str_replace('https://', '//', $img);
echo $img;
于 2013-10-08T07:30:54.753 回答