这个问题在这里已经有了答案:
PHP parse/syntax errors; and how to solve them
(21 个回答)
6年前关闭。
我需要打印 YouTube OpenGraph key 的帮助,video:url
, 使用 PHP OpenGraph图书馆。
在以下代码中,foreach
循环有效,$graph->site_name
也有效但是 $graph->video:url
才不是。
<?php
require_once('OpenGraph.php');
$graph = OpenGraph::fetch('https://www.youtube.com/watch?v=b6hoBp7Hk-A');
print $graph->site_name;
print $graph->title;
print $graph->video:url;
/*
foreach ($graph as $key => $value) {
print "$key => {$value}<br />";
}
*/
?>
上面的代码重现了错误:
Parse error: syntax error, unexpected ':' in line 7
如何直接访问
video:url
的值和其他 YouTube Assets :
使用 OpenGraph 对象?
最佳答案
虽然 YouTube 返回了 video:url
属性,您无法使用 OpenGraph 作为 $graph->video:url
检索它但您可以使用 $graph->__get('video:url')
检索它.以下是查看the OpenGraph.php code的解释.
有效函数名称 $graph->video:url
将无法工作,因为 PHP 不允许 :
函数名中的字符。以下来自PHP Manual: User-defined functions :
A valid function name starts with a letter or underscore, followed by any number of letters, numbers, or underscores. As a regular expression, it would be expressed thus: [a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*.
__get() 魔术方法
在 YouTube 视频的 OpenGraph 对象中,
->site_name
和 ->title
属性由 __get()
提供返回与私有(private) ->_values
中的方法名称匹配的值的魔术方法关联数组。因为video:url
关联数组键不符合有效的函数名,您不能直接访问它。另外,因为 ->_values
数组是私有(private)的,您不能将其作为数组访问。然而,由于 __get()
魔术方法是公开的,您可以像这样直接访问它:$graph->__get('video:url')
链接:
关于php - 如何用冒号打印 YouTube OpenGraph 属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30971375/