PHP: no Sonuçları ise - SearchRequest Split ve Arama Parçaları bulmaya çalışın

2 Cevap php

i want to split the searchrequest into parts, if there's nothing to find. example: "nelly furtado ft. jimmy jones" -> no results -> try to find with nelly, furtado, jimmy or jones.. i have an api url.. thats the difficult part.. i show you some of the actually snippets:

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

ve

 $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>');
        ;
      }

nasıl ben hiçbir şey ilk sözcük, ya da ikinci sözüne bulursa gibi, bu pasajı bir başka isteği koyabilirsiniz, bu mümkün mü? ya da belki ben bu fonksiyon hakkında bir şeyler okuyabilirsiniz edildi bana söyleyebilir?

teşekkür ederim!

2 Cevap

Peki, urlencode() üzerine $query kullanmış, böylece sonra tüm kelimeleri bir + karakteriyle ayrılmış olacak. Daha sonra bu gibi kelimeleri bölebilirsiniz:

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

Bundan sonra, sadece her bir kelime üzerinde döngü için bir yapmak ve (ben senin $source = 'all' hat için ne olduğunu bilmiyorum, bu yüzden sadece orada bırakacağım) tekrar sorguları gönderebilirsiniz.

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>');
        }
    }
}

Eğer boşlukla göre arama terimlerinizi bölmek istediğiniz gibi geliyor. Sadece (sen preg_split() daha karmaşık bölme için kullanabilirsiniz) boşluk kullanmak istiyorsanız explode() oldukça kolay bu işleyebilir.

  $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
    }
  }