• 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

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this