DesenvolvedorWordPress WhatsApp

str_contains acabou com o bug clássico do !== false

Todo mundo já escreveu if (strpos($a, $b)) e perdeu o caso em que a ocorrência está na posição zero.

Falar comigo no WhatsApp

Dica de PHP · publicada em

strpos devolve a posição da ocorrência, e a posição zero é um valor válido — mas 0 é falso em contexto booleano. Por isso a comparação obrigatória com !== false, que todo mundo esquece de vez em quando.

As três funções do PHP 8 resolvem isso devolvendo booleano de verdade: str_contains, str_starts_with e str_ends_with. O código fica mais curto e o bug some.

Em plugin WordPress isso aparece muito ao inspecionar URL, nome de arquivo ou hook. Se você ainda precisa suportar PHP 7, declare as funções num polyfill condicional — mas hoje a maioria dos sites já está em 8.

// antes: o !== false e obrigatorio e facil de esquecer
if (strpos($url, '/wp-admin/') !== false) { ... }

// depois
if (str_contains($url, '/wp-admin/')) { ... }
if (str_starts_with($hook, 'woocommerce_')) { ... }
if (str_ends_with($arquivo, '.php')) { ... }

Na prática: troca strpos(...) !== false por str_contains(). Some o bug do índice zero.

Precisa resolver isso no site de um cliente agora?

Me chame no WhatsApp com o contexto. Diagnóstico inicial sem compromisso.

WhatsApp: (43) 99932-9697

ou e-mail: [email protected]

Tem alguma dúvida? Ficarei feliz em ajudar. Clique Aqui