• 0
Sign in to follow this  
andre machado

Não consigo consultar palavras com espaço (frase) e acentuação

Question

Olá, só consigo fazer funcionar se eu digito uma unica palavra sem acentuação.

Quando digito com espaço, exemplo: "fonte notebook", então dá erro:

 

Quote

Notice: Trying to get property of non-object in /home/scripting/www/api/Controller/Anuncio.Controller.php on line 166

Notice: Trying to get property of non-object in /home/scripting/www/api/Controller/Anuncio.Controller.php on line 182

Notice: Trying to get property of non-object in /home/scripting/www/api/Controller/Anuncio.Controller.php on line 182

 

Linha 166:
  if (count($result['body']->results)>0) {

Ele dá erro no resultado, ou seja não funciona, eu sei que o erro é no $params exatamente no $query.

Mas não sei arrumar, de jeito nenhum.

O Query vem exatamente o que foi digitado, na verdade apenas limpo com um $query = trim($query);

Código:


 

Quote

  $meli               = new Meli($appId, $secretKey);
  $params             = 
  array(
    'access_token' => $_SESSION['access_token'],
     'orders' =>'stop_time_desc',
     'limit'=>$limit,
     'offset'=>$offset,
      'status'=>$status,
      'query'=>$query
      );
    $url              = "/users/{$id_usuario}/items/search";
    $result           = $meli->get($url, $params);

 

Share this post


Link to post
Share on other sites

6 answers to this question

Recommended Posts

  • 0

A acentuação pode estar quebrando a montagem dos parâmetros. Verifique na lib que vc está utilizando se há algum tratamento. Caso não você precisará tratar na montagem de array $params. url_encode talvez resolva

Share this post


Link to post
Share on other sites
  • 0
3 hours ago, elourenco said:

A acentuação pode estar quebrando a montagem dos parâmetros. Verifique na lib que vc está utilizando se há algum tratamento. Caso não você precisará tratar na montagem de array $params. url_encode talvez resolva

Obrigado, logo testarei, e quanto ao espaço ?

Share this post


Link to post
Share on other sites
  • 0
18 hours ago, andre machado said:

Obrigado, logo testarei, e quanto ao espaço ?

Usando o url_encode o espaço ficará codificado na url, assim não ficará quebrada a request

Share this post


Link to post
Share on other sites
  • 0
Posted (edited)
On 4/10/2019 at 10:35 AM, elourenco said:

Usando o url_encode o espaço ficará codificado na url, assim não ficará quebrada a request

Bom dia, a questão do espaço eu consegui resolver colocando um underline com replace.

Porém, a questão da acentuação não.

Eu digito: "Mão", o meu html é UTF-8, e o meu php é UTF-8, quando dou echo no que digito por algum motivo mostra no formato ISO-8859-1, ou seja, "Mão" corretamente.

Se eu mando essa query para o mercado livre me retorna erro:

Notice: Trying to get property of non-object in /.../controller.phpon line 

Para tirar a acentuação eu converto pelo php em UTF-8 pelo código:

          $query=iconv('UTF-8', 'ASCII//TRANSLIT', $query);

Então, "Mão" é convertido e ao dar echo aparece como "Mao", logo, é enviado essa string pro mercado livre e faz a busca normalmente, mas pela query "Mao", sem acentuação, e, o mercado livre, não encontra as palavras que estão cadastradas lá com acentuação.

Então, não consigo resolver o problema de acentuação.

 

Se eu uso $query = urlencode($query);
Ocorre o seguinte erro:
 

Sincronizando "m%C3%A3o" ...

Notice: Undefined property: stdClass::$results in 

Edited by andre machado

Share this post


Link to post
Share on other sites
  • 0
Posted (edited)

Também tentei:


    $params             =urlencode( 
      array(
        'access_token' => $_SESSION['access_token'],
         'orders' =>'stop_time_desc',
         'limit'=>$limit,
         'offset'=>$offset,
          'query'=>$query_mercadolivre
          ));  

O erro é:


Warning: urlencode() expects parameter 1 to be string, array given in /.../controller.phpon line 

Fatal error: Unsupported operand types in /.../controller.phpon line 

Também tento:

 

    $params             = 
      array(
        'access_token' => $_SESSION['access_token'],
         'orders' =>'stop_time_desc',
         'limit'=>$limit,
         'offset'=>$offset,
          'query'=>urlencode($query_mercadolivre
          ))
;  

 

O erro é:

Notice: Undefined property: stdClass::$results in 

 

 

Edited by andre machado

Share this post


Link to post
Share on other sites
  • 0

Me parece que, usando:

$query=iconv('UTF-8', 'ASCII//TRANSLIT', $query);

Funcionou, converteu de "Mão" para "Mao", 

Encontrou no mercado livre tanto Mão, quanto Mao,

Mas logo depois de sincronizar eu insiro no banco o que não tem, e, trago o resultado do banco, me parece que, o meu banc ode dados que está retornando com diferença na acentuação, e me trazendo somente "Mao",

O que fazer pro banco de dados capturar tanto a como ã, assim por diante ?

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
Sign in to follow this