در یک رشتهٔ بزرگ، تابعی بنویسید که یک آرایه از کلمات کلیدی را گرفته و با استفاده از stripos بهصورت غیر حساس به حروف بررسی کند کدام کلمات کلیدی در متن وجود دارند و یک آرایه از کلمات پیدا شده را برگرداند.
0.0 بازدید آخرین ویرایش در 221 روز قبل ساعت 01:24 0.0
از تابع PHP stripos استفاده کنید که موقعیت اولین وقوع عبارت را بهصورت case-insensitive برمیگرداند یا false اگر یافت نشود؛ برای هر کلمه در آرایه با بررسی stripos($text, $keyword) !== false آن را به آرایهٔ خروجی اضافه کنید. میتوانید از حلقه foreach یا array_filter استفاده کنید و برای متون چندبایتی (مثل فارسی) در صورت نیاز از mb_stripos استفاده کنید و قبل از جستجو با trim و/یا mb_strtolower نواقص ورودی را پاکسازی کنید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
نکتهٔ کلیدی این است که قبل از جستجو متن و کلمات کلیدی را با trim و mb_strtolower تمیز کنید تا ورودیها همگن باشند. اگر متن فارسی یا چندبایتی است، از mb_stripos بهجای stripos استفاده کنید تا کاراکترهای یونیک بهدرستی پشتیبانی شوند. به خاطر داشته باشید که stripos/mb_stripos مقدار موقعیت اولین وقوع را برمیگردانند یا false؛ بنابراین بررسی شرط !== false ضروری است و نباید از مقدار 0 چشمپوشی کنید. همچنین برای کارایی بهتر، کلمات کلیدی خالی را فیلتر کنید و نتیجه را با یک حلقهٔ کارآمد یا array_filter بسازید.
گزارش