在select查询中包含additonal字段

Ale*_*lex 5 php yql

我正在使用YQL来获取Feed列表,如下所示:

SELECT title, link, pubDate FROM rss
    WHERE url IN ('.implode("','", array_values($urls)).')
Run Code Online (Sandbox Code Playgroud)

$urls 包含Feed网址:

$urls = array(
  'delicious' => 'http://feeds.delicious.com/v2/rss/foo',
  'delicious' => 'http://feeds.delicious.com/v2/rss/anotherfoo',
  'lastfm'    => 'http://ws.audioscrobbler.com/1.0/user/foo/recenttracks.rss',
  ...
);
Run Code Online (Sandbox Code Playgroud)

我得到一个带有title/link/pubdate字段的项目数组.除了"链接"字段,我没有得到任何可能告诉我项目来自何处的信息.

如何包含array_keys($urls)与URL(值)对应的附加字段?基本上,我需要告诉我是从哪个网站某个字段的项目来自像delicious,lastfm等等.

对于lastfm,我可以检查strpos是否存在"last.fm"字符串$item['url'],但有美味的链接,这是不可能的:(


hak*_*kre 1

我得到了一系列带有标题/链接/发布日期字段的项目。除了“链接”字段之外,我没有得到任何可以告诉我该项目来自哪里的信息。

要获取每个项目的来源信息,请添加字段source

SELECT title, link, pubDate, source FROM rss
    ...
Run Code Online (Sandbox Code Playgroud)

然后,结果将source在每个条目中包含一个元素,该元素具有一个url属性,其中包含从中获取项目的 url:

<results>
    <item>
        <title>Git Immersion - Brought to you by EdgeCase</title>
        <pubDate>Wed, 21 Dec 2011 22:15:44 +0000</pubDate>
        <link>http://gitimmersion.com/</link>
        <source url="http://feeds.delicious.com/v2/rss/geek">geek's links</source>
    </item>
Run Code Online (Sandbox Code Playgroud)

YQL演示

您可以使用 查找所有字段*,这就是我发现该source字段的方式:

SELECT * FROM rss
    WHERE url IN ('http://feeds.delicious.com/v2/rss/geek', 'http://feeds.delicious.com/v2/rss/foo')
Run Code Online (Sandbox Code Playgroud)

YQL查询演示

我想这应该可以回答你的问题。为了减少传输的数据量,您也可以只选择源的 url 属性,如下所示:

SELECT title, link, pubDate, source.url FROM rss
    ...
Run Code Online (Sandbox Code Playgroud)

另请参阅使用 YQL 非常非常快地加载和转换 RSS 提要以及如何使用 YQL 合并按 pubDate 排序的 2 个 RSS 提要?


以下是对 YQL 语法的较旧评论:

请注意,这implode("','", array_values($urls))将使您的 YQL 语法无效:

... IN( urlA','urlB','urlC )

您看到开头和结尾缺少单引号了吗?添加它们:

"'".implode("','", $urls)."'"
Run Code Online (Sandbox Code Playgroud)

你应该没问题。至少你应该少一个错误。