【问题标题】:file_get_contents and variable echo [closed]file_get_contents 和变量 echo [关闭]
【发布时间】:2023-10-24 01:01:02
【问题描述】:

我正在尝试解决这个问题,我想从变量或'http://vine.co/v/' 旁边的任何 php 代码中回显信息 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 而不是定义的变量。

【问题讨论】:

  • 根据文档,file_get_contents 中的第三个参数需要是资源。检查第四个例子:php.net/manual/en/function.file-get-contents.php
  • 好的,谢谢您的帮助。对于那些投反对票的人,我对 php 还是很陌生,我确实研究了很多,只是需要帮助理解。

标签: php file-get-contents


【解决方案1】:

Don't parse HTML with regex.

从给定 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;

【讨论】:

  • 感谢 Glavic 的回复,但是当我插入您的代码时,它返回此错误 Parse error: syntax error, unexpected '[' in C:\UwAmp\www\tos.php on line 4
  • 抱歉,PHP>=5.4 语法 ;) 我将数组从 [] 更改为 array()。立即尝试。
  • 啊抱歉,我没有看到你更新的代码。你是我的英雄哈哈谢谢你的帮助:3
  • 没问题,很高兴能帮上忙。