تكرار السؤال: …
الإجابة المختصرة
دوال أصلية بديهية تفحص وجود نص داخل آخر وتعيد boolean مباشرة، كبديل لدوال strpos المعقدة والمعرضة للخطأ.
الشرح
قديماً، كان فحص بداية النص يتطلب: strpos($str, $prefix) === 0؛ وكان المطورون يقعون في فخ if (strpos(...)) حيث أن وجود النص في الموضع 0 يعيد 0 التي تفسر كـ false. وفرت PHP 8 دوال str_contains وstr_starts_with وstr_ends_with التي تقبل سلاسل نصية وتعيد true أو false بوضوح وأمان.
مثال بالكود
if (str_starts_with($path, "/api/")) {
// توجيه لـ API
}
if (str_contains($email, "@gmail.com")) {
// تحقق
}أخطاء شائعة
- استخدام if (strpos($haystack, $needle)) للتحقق من وجود الكلمة متناسين فخ الموضع 0.