2010-04-01 2 views
0

검색 할 항목이 없을 경우 searchrequest를 부분으로 나누고 싶습니다. 예 : "nelly furtado ft. jimmy jones"-> 결과 없음 -> nelly, furtado, jimmy 또는 jones로 찾으려고 시도합니다. 나는 API가 있습니다 .. 어려운 부분입니다. 실제로 니펫 :PHP : 결과가 없으면 Searchrequest를 분할하고 검색 부분을 찾으십시오.

$query = urlencode (strip_tags ($_GET[search])); 

$found = '0'; 
    if ($source == 'all') 
    { 
     if (!($res = @get_url ('http://api.example.com/?key=' . $API . '&phrase=' . $query . ' . '&sort=' . $sort))) 
     { 
     exit ('<error>Cannot get requested information.</error>'); 
     ; 
     } 
아무것도 첫 단어, 또는 두 번째 말을 발견하는 경우처럼 나는,이 조각의 다른 요청을 넣을 수있는 방법

를이 가능합니까? 아니면이 기능에 관한 기사를 읽을 수 있다고 말할 수 있습니까?

감사합니다.

답변

0

음은, 당신은 $queryurlencode()을 사용했습니다. 단지 단어의 각을 통해 루프를 수행하고 난 당신 $source = 'all' 라인가 무엇인지 모른다 (다시 쿼리를 보내, 그 후

$words = explode('+', $query); 

, 그래서 나는 ': 당신은 다음과 같은 단어를 분할 할 수 있습니다 그냥 그곳에 두십시오).

for ($i = 0; $i < count($words); $i++) 
{ 
    if ($source == 'all') 
    { 
     if (!($res = @get_url ('http://api.example.com/?key=' . $API . '&phrase=' . $words[$i] . ' . '&sort=' . $sort))) 
     { 
      exit ('<error>Cannot get requested information.</error>'); 
     } 
    } 
} 
0

공백에 기반하여 검색어를 분리하려는 것 같습니다. explode()은 공백을 사용하려는 경우이 작업을 매우 쉽게 처리 할 수 ​​있습니다 (더 복잡한 분할의 경우 preg_split()을 사용할 수 있음). 모든 단어가 + 문자로 구분됩니다 이후 있도록

$url = 'http://api.example.com/?key='.$API.'&sort='.$sort.'&phrase='; 
    if (!($res = @get_url ($url.$query))) 
    { 
    //couldn't find it, try piece by piece 
    $pieces = explode(' ',$query); 
    foreach($pieces as $p) { 
     if (! empty($p)) { 
     $res = @get_url ($url.$p); 
     if ($res) { 
      //success, do something 
     } 
     } 
    } 

    if (! $res) { 
     //no results 
    } 
    } 
관련 문제