我的消息系统中有这个YouTube缩略图/标题抓取工具。
因此,当邮件包含YouTube链接时,它会在div元素中显示。
<script>
function youtubeFetchDataCallback(data) {
var s = '';
s += '<br/>';
s += '<a href="' + data.entry["media$group"]["media$player"].url + '" target="_blank"><img src="' + data.entry["media$group"]["media$thumbnail"][0].url + '" width="' + data.entry["media$group"]["media$thumbnail"][0].width + '" height="' + data.entry["media$group"]["media$thumbnail"][0].height + '" style="float: left; margin-right: 10px;"></a>';
s += '<strong>' + data.entry["title"].$t + '</strong><br/>';
s += '<br/>' + data.entry["media$group"]["media$description"].$t.replace(/\n/g, '<br/>') + '<br/>';
s += '<div class="clearfloat"></div>';
$('.youtubeDataFetcherOutput').html(s);
}
</script>
<?php
$isY = preg_match("#(?<=v=)[a-zA-Z0-9-]+(?=&)|(?<=[0-9]/)[^&\n]+|(?<=v=)[^&\n]+#", $content, $matches);
if($isY){
foreach($matches as $m){
?>
<script>
$.getScript( 'http://gdata.youtube.com/feeds/api/videos/<?php echo $m; ?>?v=2&alt=json-in-script&callback=youtubeFetchDataCallback' );
</script>
<?php
}
} ?>
我有这个,这个工作正常,直到一个页面中有两条消息,带有YouTube链接。然后他们发送相同的$.getScript()
,因此两者都返回相同的视频缩略图和标题。我怎样才能让它们与众不同?
每条消息都有一个存储在$row['id']
中的ID,所以它可能会像使用回调一样发送唯一ID,然后以不同的方式处理它们。只是一个想法,因为我不确定..
(我使用了foreach,因为$ matches作为数组返回)
如何做到这一点?
答案 0 :(得分:0)
让你的javascript解析器返回一个JSON对象,PHP可以很容易地转换为json_decode
的数组
阵列的形式取决于你,但有两种主要方式可供选择。
1)如果url相同时id是相同的,只需在存储链接时使用id作为数组键。这样重复的链接只会覆盖自己。
2)如果您不喜欢这样,并且知道网址将相同,请使用array_unique($links)
处理从json_decode()
获得的数组
$links=array('stackoverflow.com','stackoverflow.com','google.com');
foreach(array_unique($links) as $link) {
//output link
}