Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

mldiogo87

Função strtolower

Recommended Posts

Boa noite!

Minha página estava rodando tranquila em localhost, com easyphp. Quando migrei para servidor web, que roda no Linux, a função strtolower passou a não funcionar. Todos os acentos são substituitos por "?". 

Será que ela não está habilitada ou a versão do php não é compátivel?

Tem alguma forma de habilita-la ? Tentei falar com o servidor, mas eles não resolveram.

Obrigado,

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
59 minutos atrás, mldiogo87 disse:

Boa noite!

Minha página estava rodando tranquila em localhost, com easyphp. Quando migrei para servidor web, que roda no Linux, a função strtolower passou a não funcionar. Todos os acentos são substituitos por "?". 

Será que ela não está habilitada ou a versão do php não é compátivel?

Tem alguma forma de habilita-la ? Tentei falar com o servidor, mas eles não resolveram.

Obrigado,

Os acentos são substituídos por "?" apenas após passar pelo strtolower? Ou eles já iniciam assim?

Compartilhar este post


Link para o post
Compartilhar em outros sites
8 horas atrás, mldiogo87 disse:

Todos os acentos são substituitos por "?"

 

Olha, isso está com cara de ser charset errado, ou um utf8_encode colocado recursivamente. Veja se isto não acontece em outras partes do código também, pois é dificil acontecer só na lower

Compartilhar este post


Link para o post
Compartilhar em outros sites

A informação vem do banco?!

Confirme o charset do Banco/Tabela/Coluna estão corretos.

 

A pagina html possui a tag:?

<head>
	<meta charset="UTF-8">
	<title></title>
</head>

 

A charset do arquivo está correta?

 

 

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para não ter os caracteres Unicode afetado por configurações de localidade, utilize o mb_strtolower
 

$palavra = 'áÁêõ';

echo strtolower($palavra); // ����
echo mb_strtolower($palavra,'UTF-8'); // ááêõ


Importante: A extensão php_mbstring tem que estar habilitada no php.ini

Compartilhar este post


Link para o post
Compartilhar em outros sites

As palavras estão armazenadas em banco de dados e só acontece quando eu uso a função, quando eu as utilizo sem a função não tenho esse problema.

E o "?" a que me refiro não é �, tradicionalmente atribuído à problemas de UTF-8.

Será que não tenho como testar a função, ver se está habilitada ?

Tenho quase certeza que o problema é ela!

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
1 hora atrás, KhaosDoctor disse:

 

Olha, isso está com cara de ser charset errado, ou um utf8_encode colocado recursivamente. Veja se isto não acontece em outras partes do código também, pois é dificil acontecer só na lower

Só acontece nessa parte do código.

 

1 hora atrás, Guilherme Luiz disse:

Isso mais me aparenta HTML não indicando o charset da pagina...

O charset está indicado, tanto que em localhost rodava normal.

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

Compartilhar este post


Link para o post
Compartilhar em outros sites
9 horas atrás, jamesbond disse:

Os acentos são substituídos por "?" apenas após passar pelo strtolower? Ou eles já iniciam assim?

Apenas quando passam.

Compartilhar este post


Link para o post
Compartilhar em outros sites
29 minutos atrás, mldiogo87 disse:

E o "?" a que me refiro não é �, tradicionalmente atribuído à problemas de UTF-8.


Mas você testou com mb_strtolower? Este problema é descrito na própria documentação do PHP!
 

31 minutos atrás, mldiogo87 disse:

Será que não tenho como testar a função, ver se está habilitada ?


Você pode testar assim, mas se fosse esse o caso, daria um Fatal error: Call to undefined function

if (function_exists('strtolower'))
{
    echo 'existe';
} else {
    echo 'Não existe';
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
13 minutos atrás, EdCesar disse:


Mas você testou com mb_strtolower? Este problema é descrito na própria documentação do PHP!
 


Você pode testar assim, mas se fosse esse o caso, daria um Fatal error: Call to undefined function


if (function_exists('strtolower'))
{
    echo 'existe';
} else {
    echo 'Não existe';
}

 

Realmente, da que existe.

Testei sim o mb_strtolower, da na mesma.

Compartilhar este post


Link para o post
Compartilhar em outros sites
								
$eliminaespaco = str_replace(" ","",$local);
$acento = strtolower($eliminaespaco, 'UTF-8');

echo $acento; (aqui ele retorna sem espaco e minuscula, sem problemas, mas com acento)

$nomeimg = preg_replace( '/[`^~\'"]/', null, iconv( 'UTF-8', 'ASCII//TRANSLIT', $acento ) );

echo $nomeimg; (a partir daqui que ele substitui os acentos por ?)

Galera, me desculpem, mil vezes. Na verdade, a função que não estava funcionando é essa: 

Ou seja, o iconv...

Desculpem!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Resolvido galera:

$tr = strtr(

    $acento,

    array (

      'À' => 'A', 'Á' => 'A', 'Â' => 'A', 'Ã' => 'A', 'Ä' => 'A', 'Å' => 'A',
      'Æ' => 'A', 'Ç' => 'C', 'È' => 'E', 'É' => 'E', 'Ê' => 'E', 'Ë' => 'E',
      'Ì' => 'I', 'Í' => 'I', 'Î' => 'I', 'Ï' => 'I', 'Ð' => 'D', 'Ñ' => 'N',
      'Ò' => 'O', 'Ó' => 'O', 'Ô' => 'O', 'Õ' => 'O', 'Ö' => 'O', 'Ø' => 'O',
      'Ù' => 'U', 'Ú' => 'U', 'Û' => 'U', 'Ü' => 'U', 'Ý' => 'Y', 'Ŕ' => 'R',
      'Þ' => 's', 'ß' => 'B', 'à' => 'a', 'á' => 'a', 'â' => 'a', 'ã' => 'a',
      'ä' => 'a', 'å' => 'a', 'æ' => 'a', 'ç' => 'c', 'è' => 'e', 'é' => 'e',
      'ê' => 'e', 'ë' => 'e', 'ì' => 'i', 'í' => 'i', 'î' => 'i', 'ï' => 'i',
      'ð' => 'o', 'ñ' => 'n', 'ò' => 'o', 'ó' => 'o', 'ô' => 'o', 'õ' => 'o',
      'ö' => 'o', 'ø' => 'o', 'ù' => 'u', 'ú' => 'u', 'û' => 'u', 'ý' => 'y',
      'þ' => 'b', 'ÿ' => 'y', 'ŕ' => 'r'
    )
);


echo $tr;

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não querendo ser do contra, mas por um acaso você aplicara essa função para informações que o usuário ira visualizar?
Pq se for, exibir por exemplo, saucoes ao invés de saudações, não seria errado?

Compartilhar este post


Link para o post
Compartilhar em outros sites
2 horas atrás, mldiogo87 disse:

								
$eliminaespaco = str_replace(" ","",$local);
$acento = strtolower($eliminaespaco, 'UTF-8');

echo $acento; (aqui ele retorna sem espaco e minuscula, sem problemas, mas com acento)

$nomeimg = preg_replace( '/[`^~\'"]/', null, iconv( 'UTF-8', 'ASCII//TRANSLIT', $acento ) );

echo $nomeimg; (a partir daqui que ele substitui os acentos por ?)

Galera, me desculpem, mil vezes. Na verdade, a função que não estava funcionando é essa: 

Ou seja, o iconv...

Desculpem!

Por isso eu já perguntei se era só após passar pela função. Execute testes antes amigo.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 17/03/2017 at 13:28, EdCesar disse:

Não querendo ser do contra, mas por um acaso você aplicara essa função para informações que o usuário ira visualizar?
Pq se for, exibir por exemplo, saucoes ao invés de saudações, não seria errado?

Na verdade, eu utilizou isso pra percorrer pastas no servidor, não era interferir na exibição de dados. 

Obrigado pela preocupação!

 

Em 17/03/2017 at 14:12, jamesbond disse:

Por isso eu já perguntei se era só após passar pela função. Execute testes antes amigo.

você tem razão. Me desculpe!

Compartilhar este post


Link para o post
Compartilhar em outros sites
1 minuto atrás, mldiogo87 disse:

Na verdade, eu utilizou isso pra percorrer pastas no servidor, não era interferir na exibição de dados. 

Obrigado pela preocupação!

 

você tem razão. Me desculpe!

Sem problemas, amigo.

Estamos aqui para tentar ajudar

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por Arhon Berdichevsky
      Oi, pessoal.
       
      Usando o seguinte código consigo acessar o banco de dados sem problemas no EasyPHP (localhost).
       
      $sql = "SELECT id, nome, sum(entrada) AS soma_entrada, datahist from historico WHERE id='$id' AND datahist BETWEEN '$datainicial' AND '$datafinal' GROUP by datahist";
      $resultado = mysqli_query($strcon,$sql) or die ("Erro...1");
       
      Já no Wamp instalado num servidor usando acesso remoto, não consigo acessar o BD e visualizo Erro...1. O erro acontece somente nesse código; com outros arquivos do mesmo projeto consigo o acesso normalmente ao banco de dados. 
       
      Será que tem alguma coisa nesse código que o Wamp não aceita e o EasyPHP sim???
       
      Para testar se a tabela estava com algum problema no Wamp, usei o seguinte código  e consegui visualizar direitinho a variavel $entri, mas depois aparece o Erro...1 do die. 
       
      $sql = "SELECT entrada from historico WHERE id_hist='8'";
      $resultado = mysqli_query($strcon,$sql) or die ("Erro...0");
      while ($registro = mysqli_fetch_array($resultado)){
          $entri = $registro['entrada'];
      }
          echo $entri;
          echo "<br/>";
      $sql = "SELECT id, nome, sum(entrada) AS soma_entrada, datahist from historico WHERE id='$id' AND datahist BETWEEN '$datainicial' AND '$datafinal' GROUP by datahist";
      $resultado = mysqli_query($strcon,$sql) or die ("Erro...1");
       
      Fico no aguardo das resposta. Obrigado desde já.
       
    • Por barogana
      Ola a todos.
      Pra começar, já pesquisei, mas não encontrei ou entendi, informações sobre o que preciso, por isto recorro a elite. (xD).
       
      em um servidor tenho:
      /home/CONTA/MAINSCRIPTS (raiz do host) e
      /public_html/ index.php, etc
       
      os scripts de MAINSCRIPTS, são visualizados e executados por diversas rotinas dentro de public_html, e tudo funciona perfeitamente bem.
       
      o problema:
      preciso rodar (para manutenção) em localhost (easyphp, em windows7, apache2)
      como fazer que o easyphp, entenda que os scripts globais, estejam na pasta acima do que seria o dominio (public_html), e os execute corretamente?
       
      grato a quem puder me auxiliar.
       
       
       
       
       
    • Por zDarkon
      Fala galera, fiz uma ferramenta web para rodar em um consultorio e tive um certo problema com esse novo Easyphp dev. 
      Problema é que coloquei na pasta inicializar pois não tem mas a função de iniciar junto com windows, ele inicia porém não roda o apache/database. Ficam online porém so funciona mesmo quando abre o dashboard.
      Então pensei em mudar de pacote para o easyphp antigo ou xamp ou wamp.
      Qual vocês aconselhariam ? ou alguma outra solução?
    • Por larissa_sanx
      Olá pessoal, :P
      Estou com um problema no easyphp, ele me diz que a porta 80 do apache já esta sendo usada e que eu devo ir no arquivo cports.exe e encerrar a aplicação que está usando o apache, Eu faço isso, mas não consigo localizar o programa e muito menos encerrar alguma coisa..
      Aguardo respostas, Obrigada :D
       
       
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.