Hello,

Para realizar o cadastro, você pode preencher o formulário ou optar por uma das opções de acesso rápido disponíveis.

Welcome Back,

Por favor, insira suas informações de acesso para entrar ou escolha uma das opções de acesso rápido disponíveis.

Forgot Password,

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Captcha Click on image to update the captcha.

You must login to ask a question.

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

PergunteAqui Latest Questions

  • 0
Anônimo(a)

Quais as diferenças entre a função substr e mb_substr em PHP?

You must login to add an answer.

1 Answer

  1. Boa tarde!

    A diferença está no conjunto de caracteres usados.

    A função substr (e todas as outras de string http://br2.php.net/manual/pt_BR/ref.strings.php ) assume que cada byte (8 bits) representa um caractere, o que é verdade para os símbolos básicos (a, b, c, …, A, B, C, …, 1, 2, 3, …, $, %, &, …) mas não é verdade para outros símbolos (á, é, í, …, →, √, …).

    Já a função mb_substr (e todas as mb_* http://br2.php.net/manual/pt_BR/ref.mbstring.php ), manipula corretamente os caracteres mais complexos. A sigla mb quer dizer multi-byte, ou seja, cada caractere pode ser representado por mais de um byte.

    Então, quando se trabalha com textos sem acentos e escritos em ASCII (http://www.asciitable.com/ ) não existe diferença entre as duas funções. Mas raramente essa é a verdade, o português é cheio de acentos e, portanto, é bom usar somente as funções mb.

    Um exemplo prático: contar quantas letras tem a palavra “cartão”. Veja a diferença:

    (copie e cole daqui para testar)

    Como a função substr é intimamente ligada com a contagem de caracteres, então isso pode causar vários erros.

    Como já disse, quando se trabalha com ASCII (um tipo de codificação) não costuma dar problema. Ele surge ao usar, por exemplo, UTF-8 (uma outra forma de codificação, melhor que ASCII). Assim, para evitar problemas use mb_substr. No primeiro caso não faz diferença, no segundo faz.

    Boa parte dos sites (inclusive o Yahoo) usam o padrão UTF-8, pois ele dá suporte a milhares de caracteres diferentes (exemplo, o alfabeto grego minúsculo: α β γ δ ε ζ η θ ι κ λ μ ν ξ ο π ρ σ τ υ φ χ ψ ω).

    Um site usa UTF-8 quando no topo da página html vem a tag:

    (veja que esse página contém isso)

    Bons estudos!

Related Questions