Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) substr retorna caracter curinga


flaviomicheletti

Pergunta

A função substr retorna caracter curinga quando o último caracter é acentuado.

Veja código abaixo.

Alguém, por gentilza, poderia me ajudar?

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    <head>
        <title></title>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <meta http-equiv="Content-Style-Type" content="text/css" />
    </head>
<body>


<p>
<?PHP

$string_qualquer = "Flávio Micheletti";
echo substr($string_qualquer,0, 3);
// retorna "Fl?";


?>
</p>

</body>
</html>

Informação adicionais:

XP SP3

PHP 5.3.0

Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0
Isso é problema de HTML e não PHP, troque o charset ... tipo para o nosso pardão ....

Ou salve seus arquivos em modo "UTF-8" ...

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />

Oi SK15, obrigado pela resposta.

Num ponto você acertou: se mudamos o charset para ISO-8859-1 funciona.

Só que por padrão o projeto inteiro está em utf-8, logo não posso mudar apenas este script.

Talvez seja o forma como eu estou salvando meu arquivo...

No NETBeans 6.7.1 eu vou no menu "Arquivo -> Projeto Properties -> Codificação -> UTF-8

No Dreamweaver 2004 eu digito "CTRL+j" e em "document encoding" está configurado "Unicode(UTF-8)".

Salvo, resalvo, crio um novo arquivo e nada.

você conhece alguma forma mais explícita ou eficaz para salvar o documento em UTF-8?

Pois continuo com o mesmo problema.

Abs.

Link para o comentário
Compartilhar em outros sites

  • 0
olá Flávio...

já deu uma olhada em utf8_decode() e uft8_encode() ?...acredito que se você colocar em suas variáveis.. resolverá o seu problema..

abraços

-- PALIATIVO --

Oi MTavares, você acertou, funcionou.

Mas acho que isso é uma medida apenas paliativa.

Dê uma olha no código como ficou

<?php
header('Content-type: text/html; charset="utf-8"',true);

$string_qualquer = "flávio";

$str_iso = iconv("utf-8", "ISO-8859-1", $string_qualquer);
     //$str_iso = utf8_decode($string_qualquer); # mesmo efeito que a linha acima

$str_apos_substr = substr($str_iso, 0, 3);

$volta_para_utf8 = iconv("ISO-8859-1", "utf-8", $str_apos_substr);
    //$volta_para_utf8 = utf8_encode($str_apos_substr); # mesmo efeito que a linha acima

echo $volta_para_utf8;
    // print flá
?>

A impressão que eu tenho é que "internamente" ele(o php) está se atrapalhando quando a codificação é utf-8.

Acho que isso deve ser alguma questão relativa com a CONFIGURAÇÂO DO SERVIDOR(APACHE) ou configuração do próprio sistema operacional.

Minha área de desenvolvimento é winxp sp3, e o servidor web que eu disponibilizo o sistema é linux, está hospedado na dialhost, mas eu tenho o mesmo resultado nos dois locais(web e localhost).

Ainda estou procurando uma solução.

Obrigado por enquanto.

Link para o comentário
Compartilhar em outros sites

  • 0

Solução elegante

Um colega de equipe achou uma solução satisfatória:

<?php
header('Content-type: text/html; charset="utf-8"',true);

$string_qualquer = "flávio";

echo mb_substr($string_qualquer, 0, 3, 'utf-8');
    // print flá
?>
Veja mais em http://br.php.net/manual/pt_BR/function.mb-substr.php À todos que responderam um muitíssimo obrigado. Fica dois pontos para se pensar à respeito... 1) Talves dê para configurar o servidor com a codificação desejada, no caso utf-8. 2) Uma outra função que apresentou o mesmo problema file_put_contents Resolvi da seguinte forma:
file_put_contents(utf8_decode($nome_arquivo), $conteudo);

obs: Trabalhar com utf-8 não é brincadeira não.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...