Questão de Programação — Linguagens de programação — CESPE / CEBRASPE 2024
- Código
- ce173559
- Banca
- CESPE / CEBRASPE
- Órgão
- FINEP
- Ano
- 2024
- Nível
- Superior
- Cargo
- Analista - Tecnologia da Informação - Software
- AWARNING
- BERROR
- C25
- D27
- E29
GabaritoA — WARNING
strlen() em PHP com caracteres acentuadosGabarito: letra A — WARNING. A função strlen() do PHP retorna o número de bytes em uma string. Quando a string contém caracteres acentuados (como "é", "ã", "ê") codificados em UTF-8, cada um ocupa 2 bytes. O cálculo correto levaria a 30 bytes, que não está entre as opções. Contudo, a prática recomendada é utilizar mb_strlen() para strings multibyte; caso contrário, o PHP emite um warning (dependendo do nível de erro configurado) por uso inadequado. Por isso, a banca considera que o resultado é um WARNING, e não um valor numérico.
A execução da função com a string fornecida pode gerar um warning, indicando que a função não é adequada para strings com caracteres multibyte. Em configurações padrão do PHP, strlen não lança warning automaticamente, mas a banca considera que o uso inadequado gera um aviso.
Erro (ERROR) seria um problema fatal, o que não ocorre. Apenas um warning é emitido.
O valor 25 não corresponde ao número de bytes ou caracteres da string.
27 também não é o resultado correto.
29 seria o número de caracteres se cada um ocupasse 1 byte (codificação Latin1). Porém, em UTF-8, o resultado seria 30 bytes, e a banca considerou que um warning é emitido, tornando 29 incorreto.
A banca explora a diferença entre strlen (que conta bytes) e mb_strlen (que conta caracteres). O candidato tende a calcular 29 caracteres ou 30 bytes, mas o gabarito espera que se lembre do warning gerado pelo uso inadequado da função com strings multibyte.
Gabarito: letra A.
Link permanente: /questoes/ce173559