Î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).
<?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().