简单的 Twitter API PHP 问题

发布于 2024-11-10 15:52:11 字数 2059 浏览 2 评论 0原文

这应该相当容易,但我认为我有点愚蠢......

我想从 twitter:places 获取全名 - 有人可以帮助我吗?

为了获取其他元素,我使用 $entry->title 例如,但 $entry->twitter:places->full_name 不起作用。

<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns:google="http://base.google.com/ns/1.0" xml:lang="en-US" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns="http://www.w3.org/2005/Atom" xmlns:twitter="http://api.twitter.com/">
  <id></id>
  <link type="text/html" href="http://search.twitter.com/search?q=" rel="alternate"/>
  <link type="application/atom+xml" href="http://search.twitter.com/search.atom?q=" rel="self"/>
  <title>Twitter Search</title>
  <link type="application/opensearchdescription+xml" href="http://search.twitter.com/opensearch.xml" rel="search"/>
  <link type="application/atom+xml" href="http://search.twitter.com/search.atom?&amp;since_id=" rel="refresh"/>
  <updated>2011-06-01T18:32:50Z</updated>
  <openSearch:itemsPerPage>15</openSearch:itemsPerPage>
  <entry>
    <id></id>
    <published>2011-06-01T18:32:50Z</published>
    <link type="text/html" href="" rel="alternate"/>
    <title></title>
    <content type="html"></content>
    <updated>2011-06-01T18:32:50Z</updated>
    <link type="image/png" href="" rel="image"/>
    <twitter:geo>
    </twitter:geo>
    <twitter:metadata>
      <twitter:result_type>recent</twitter:result_type>
    </twitter:metadata>
    <twitter:place>
      <twitter:id></twitter:id>
      <twitter:full_name>London</twitter:full_name>
      <twitter:type>city</twitter:type>
    </twitter:place>
    <twitter:source></twitter:source>
    <twitter:lang>en</twitter:lang>
    <author>
      <name></name>
      <uri></uri>
    </author>
  </entry>
</feed>

有人可以帮忙吗!?

This should be fairly easy, but I think I am being a bit stupid ....

I want to get the full_name from twitter:places - can anyone help me please?

To get the other elements I use $entry->title for example, but $entry->twitter:places->full_name doesnt work.

<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns:google="http://base.google.com/ns/1.0" xml:lang="en-US" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns="http://www.w3.org/2005/Atom" xmlns:twitter="http://api.twitter.com/">
  <id></id>
  <link type="text/html" href="http://search.twitter.com/search?q=" rel="alternate"/>
  <link type="application/atom+xml" href="http://search.twitter.com/search.atom?q=" rel="self"/>
  <title>Twitter Search</title>
  <link type="application/opensearchdescription+xml" href="http://search.twitter.com/opensearch.xml" rel="search"/>
  <link type="application/atom+xml" href="http://search.twitter.com/search.atom?&since_id=" rel="refresh"/>
  <updated>2011-06-01T18:32:50Z</updated>
  <openSearch:itemsPerPage>15</openSearch:itemsPerPage>
  <entry>
    <id></id>
    <published>2011-06-01T18:32:50Z</published>
    <link type="text/html" href="" rel="alternate"/>
    <title></title>
    <content type="html"></content>
    <updated>2011-06-01T18:32:50Z</updated>
    <link type="image/png" href="" rel="image"/>
    <twitter:geo>
    </twitter:geo>
    <twitter:metadata>
      <twitter:result_type>recent</twitter:result_type>
    </twitter:metadata>
    <twitter:place>
      <twitter:id></twitter:id>
      <twitter:full_name>London</twitter:full_name>
      <twitter:type>city</twitter:type>
    </twitter:place>
    <twitter:source></twitter:source>
    <twitter:lang>en</twitter:lang>
    <author>
      <name></name>
      <uri></uri>
    </author>
  </entry>
</feed>

Can anyone help please!?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

つ可否回来 2024-11-17 15:52:11

要处理带前缀的元素(表示非默认命名空间),您可以按命名空间过滤:

$name = $xml->entry->children('http://api.twitter.com/')->place->full_name

或按绑定前缀:

$name = $xml->entry->children('twitter', true)->place->full_name

您的另一个选择是使用 XPath:

$xml->registerXPathNamespace('t', 'http://api.twitter.com/');
$names = $xml->xpath('//t:full_name');
$name = $names[0];

如果您想使用精确的 XPath,它会变得更加复杂,因为您的路径中有不同的命名空间:

// Set up our own prefix for default namespace (we could also just use the Atom prefix explicitly as we do below with Twitter)
$namespaces = $xml->getDocNamespaces();
$xml->registerXPathNamespace('atom', $namespaces['']);
// Set up our own Twitter prefix
$xml->registerXPathNamespace('t', 'http://api.twitter.com/');
$names = $xml->xpath('/atom:feed/atom:entry/t:place/t:full_name'); 
$name = $names[0];

XML 命名空间前缀通常是任意的——重要的是命名空间(正如我们在上面的代码中绑定我们想要的任何前缀的能力所表明的那样)。

To deal with the prefixed elements (which indicate a non-default namespace), you can filter by namespace:

$name = $xml->entry->children('http://api.twitter.com/')->place->full_name

or by bound prefix:

$name = $xml->entry->children('twitter', true)->place->full_name

Your other option would be to use XPath:

$xml->registerXPathNamespace('t', 'http://api.twitter.com/');
$names = $xml->xpath('//t:full_name');
$name = $names[0];

If you want to use an exact XPath, it gets more complicated, since there are different namespaces in your path:

// Set up our own prefix for default namespace (we could also just use the Atom prefix explicitly as we do below with Twitter)
$namespaces = $xml->getDocNamespaces();
$xml->registerXPathNamespace('atom', $namespaces['']);
// Set up our own Twitter prefix
$xml->registerXPathNamespace('t', 'http://api.twitter.com/');
$names = $xml->xpath('/atom:feed/atom:entry/t:place/t:full_name'); 
$name = $names[0];

XML namespace prefixes are generally arbitrary--the important thing is the namespace (as indicated by our ability to bind whatever prefix we want in our code above).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文