制作独特的功能?

时间:2010-11-09 18:22:21

标签: php javascript jquery

我的消息系统中有这个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作为数组返回)

如何做到这一点?

1 个答案:

答案 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
}