2013-01-07 56 views
0

我在我的网页上使用YouTube YouTube api搜索音乐视频的搜索功能。稍后,您可以在同一页面上观看。然而,当我使用api时,以及当我搜索其中有空格的东西时,搜索功能完全可以工作。当我对字符串进行一些更改并用“/”替换所有空格时,例如,eminem迷失自己变成:eminem/lose/yourself,并且当你搜索到这个时,你不会得到正确的结果。这是我使用的代码和平: 这是我的代码:YOUTUBE API搜索功能无法正常工作

<form method="post" action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>"> 
<p>Search: 
<input type="text" name="q" /> 
<input type="submit" name="submit" value="Search" style="margin-top:-30px"/> 
</p> 
</form> 

,然后在我的PHP身边,我有:

if (!isset($_POST['q']) || empty($_POST['q'])) { 
     die ('ERROR: Please enter one or more search keywords'); 
} 
else { 
     $q = $_POST['q']; 
    $q = str_replace(' ','/',$q); 
     //echo $q; 

} $ feedURL =“HTTP:// GDATA .youtube.com/feeds/api/videos/-/{$ q}?orderby = viewCount & max-results = {$ i}“; $ sxml = simplexml_load_file($ feedURL); //获得来自opensearch的摘要计数:命名空间 $ counts = $ sxml-> children('http://a9.com/-/spec/opensearchrss/1.0/'); $ total = $ counts-> totalResults; $ startOffset = $ counts-> startIndex; $ endOffset =($ startOffset-1)+ $ counts-> itemsPerPage;

我试过不同的方法来使搜索功能起作用。我使用了这个$ q = ereg_replace('[[:space:]] +','/',trim($ q)),但没有起作用,然后我开始用“+”替换字符串,再次。 我想看看如何能有一个与空间一起工作的搜索功能。

+0

有你试图将一个'urlencode'适用于'$ q'像你应该_ ? URL中通常不允许使用空格,它们应该编码为'%20'。当然允许斜线。 – Halcyon

+0

另外,假设一个图书馆 - 被数百万人使用 - “不起作用”是非常冒失的 - 你总是应该假设你做错了什么。 – Halcyon

+0

我确实使用过urlencode,但它不起作用。 –

回答

0

尝试格式化您的查询像这样

https://gdata.youtube.com/feeds/api/videos? 
q=football+-soccer 
&orderby=published 
&start-index=11 
&max-results=10 
&v=2 

API的版本是非常重要的V = 2是最新的稳定版本