我需要帮助使用PHP OpenGraph库打印YouTube OpenGraph密钥video:url
。
在以下代码中,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 />";
}
*/
?>
上面的代码重现了错误:
解析错误:语法错误,第7行意外':'
如何使用OpenGraph对象直接访问video:url
和:
的其他YouTube媒体资源的值?
答案 0 :(得分:0)
虽然YouTube返回a = "SLSQ"
b = "SQLSSQLSQ"
B = zip(b, xrange(0,len(b)))
from itertools import combinations
res = []
for i in combinations(B, 4):
bstr = "".join(map(lambda x:x[0], i))
if a.__contains__(bstr):
res.append(map(lambda x:x[1], i))
for i in res:
print i
属性,但您无法使用OpenGraph作为video:url
检索它,但您可以使用$graph->video:url
检索它。下面的解释检查the OpenGraph.php code。
有效功能名称
$graph->__get('video:url')
将无效,因为PHP不允许函数名中包含$graph->video:url
个字符。以下内容来自PHP Manual: User-defined functions:
有效的函数名称以字母或下划线开头,后跟任意数量的字母,数字或下划线。作为正则表达式,它将表示为:[a-zA-Z_ \ x7f- \ xff] [a-zA-Z0-9_ \ x7f- \ xff] *。
__ get()魔法
在YouTube视频的OpenGraph对象中,:
和->site_name
属性由__get()
魔术方法提供,该方法返回与私有{{1}中的方法名称匹配的值关联数组。由于->title
关联数组键不符合有效的函数名,因此无法直接访问它。此外,由于->_values
数组是私有的,因此您无法将其作为数组进行访问。但是,由于video:url
魔术方法是公开的,因此您可以直接访问它:
->_values
链接: