str_contains, str_starts_with și str_ends_with în PHP 8 în PHP

Căutare modernă în șiruri fără strpos !== false: funcțiile native din PHP 8 pentru verificarea existenței, prefixului și sufixului în text.

Sintaxă
if (str_contains($email, '@') && str_ends_with($email, '.ro')) { ... }

Înainte de PHP 8, verificarea dacă un șir conține un subșir reprezenta una dintre cele mai frecvente surse de bug-uri pentru începători și avansați deopotrivă. Pentru a căuta un text, erai obligat să scrii strpos($text, $cautat) !== false. Dacă greșeai și scriai if (strpos($text, $cautat)), iar cuvântul se afla chiar la începutul șirului (indexul 0), condiția era evaluată eronat ca false!

PHP 8 a eliminat această problemă istorică prin adăugarea a trei funcții dedicate, expresive și rapide care returnează direct o valoare booleană (true sau false).

Exemple practice cu str_contains, str_starts_with și str_ends_with
<?php

declare(strict_types=1);

$email = "contact@dexblog.ro";
$caleFisier = "documente/raport_financiar_2026.pdf";

// 1. str_contains: verifică dacă textul există oriunde în șir
if (str_contains($email, "@dexblog")) {
    echo "Adresă oficială din domeniul Dexblog.\n";
}

// 2. str_starts_with: verifică dacă textul începe cu un anumit prefix
if (str_starts_with($caleFisier, "documente/")) {
    echo "Fișierul este stocat în directorul securizat de documente.\n";
}

// 3. str_ends_with: verifică dacă textul se termină cu o anumită extensie
if (str_ends_with($caleFisier, ".pdf")) {
    echo "Fișierul este un document PDF valid.\n";
}

Sensibilitate la Majuscule (Case-Sensitivity)

Toate aceste trei funcții sunt case-sensitive (țin cont de litere mari și mici). Dacă dorești o verificare insensibilă la majuscule, convertește ambele șiruri înainte folosind strtolower() sau mb_strtolower().