تعد خوارزمية String Search طريقة أساسية في البرمجة تستخدم لتحديد موضع سلسلة فرعية ضمن سلسلة أكبر. يتم استخدام هذه الخوارزمية بشكل شائع للبحث عن كلمات رئيسية محددة أو تسلسل الأحرف أو الأنماط داخل النص أو البيانات. في PHP ، توجد طرق مختلفة مثل strpos() وهي strstr() متاحة لإجراء عمليات البحث عن السلاسل.
كيف تعمل خوارزمية البحث عن السلاسل
تعمل خوارزمية String Search على النحو التالي:
- نص للبحث فيه: أولاً ، نحتاج إلى سلسلة أكبر(نص ، بيانات) نريد البحث داخلها.
- نمط للبحث عنه: نحتاج إلى سلسلة فرعية(كلمة رئيسية ، نمط) نريد تحديد موقعه داخل النص.
- مطابقة السلسلة: تقارن الخوارزمية كل حرف من أحرف النمط بالأحرف المقابلة في النص. إذا لم تتطابق الأحرف المقابلة ، تستمر الخوارزمية في التحقق من المواضع التالية.
- إرجاع الموضع: إذا تم العثور على السلسلة الفرعية داخل السلسلة الأكبر ، فإن الخوارزمية ترجع موضع تواجدها الأول. إذا لم يتم العثور عليها ، تقوم الخوارزمية بإرجاع قيمة غير موجودة(على سبيل المثال ، -1).
مزايا وعيوب خوارزمية البحث المتسلسل
مزايا:
- بسيطة ومفهومة: هذه الخوارزمية سهلة التنفيذ والاستخدام.
- أداء جيد للسلاسل القصيرة: يعمل بشكل جيد عند البحث في السلاسل القصيرة.
سلبيات:
- أداء ضعيف للسلاسل الطويلة: يمكن أن ينخفض الأداء بشكل ملحوظ عند البحث في سلاسل طويلة.
- يبحث فقط عن التواجد الأول: تقوم الخوارزمية بإرجاع موضع التكرار الأول فقط للسلسلة الفرعية.
المثال والشرح
لنفترض أن لدينا نصًا لوصف المنتج ، ونريد التحقق مما إذا كانت الكلمة الرئيسية screen "تظهر في النص. يوجد أدناه مثال على كيفية إجراء بحث سلسلة في PHP:
$text = "This product features a wide and high-quality screen.";
$keyword = "screen";
$position = strpos($text, $keyword);
if($position !== false) {
echo "The keyword \"$keyword\" was found at position $position in the text.";
} else {
echo "The keyword \"$keyword\" was not found in the text.";
}
في هذا المثال ، نستخدم الوظيفة strpos() للبحث عن موضع التكرار الأول للكلمة الرئيسية screen داخل النص. إذا تم العثور على الكلمة الأساسية ، تتم طباعة موضعها الأول ؛ إذا لم يتم العثور على الكلمة الأساسية يتم عرضها.
على الرغم من كونها بسيطة وفعالة لحالات البحث الأساسية ، إلا أن خوارزمية String Search قد تعمل بشكل سيئ مع النصوص الطويلة ولا توفر القدرة على العثور على جميع تكرارات السلسلة الفرعية.



