Pular para o conteúdo principal

Questão de Programação — Linguagens de programação — CESPE / CEBRASPE 2024

ProgramaçãoLinguagens de programação
Código
ce173559
Banca
CESPE / CEBRASPE
Órgão
FINEP
Ano
2024
Nível
Superior
Cargo
Analista - Tecnologia da Informação - Software
strlen("PHP é uma linguagem poderosa!")Assinale a opção em que é corretamente indicado o resultado da função precedente em PHP.
  1. AWARNING
  2. BERROR
  3. C25
  4. D27
  5. E29
Revelar gabarito e comentário

GabaritoA — WARNING

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Função strlen() em PHP com caracteres acentuados

Gabarito: 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.

Alternativa A — ✅ Correta ⟵ GABARITO

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.

Alternativa B — ❌ Incorreta

Erro (ERROR) seria um problema fatal, o que não ocorre. Apenas um warning é emitido.

Alternativa C — ❌ Incorreta

O valor 25 não corresponde ao número de bytes ou caracteres da string.

Alternativa D — ❌ Incorreta

27 também não é o resultado correto.

Alternativa E — ❌ Incorreta

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.

NÃO CAIA NESSA!

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