"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية التحقق بكفاءة من وجود سلسلة في ملف باستخدام PHP؟

كيفية التحقق بكفاءة من وجود سلسلة في ملف باستخدام PHP؟

تم النشر بتاريخ 2024-11-08
تصفح:986

How to Efficiently Check for a String in a File with PHP?

كيفية التحقق مما إذا كان الملف يحتوي على سلسلة في PHP

لتحديد ما إذا كانت هناك سلسلة معينة موجودة داخل الملف، دعنا نستكشف حل وبديل أكثر كفاءة.

الكود الأصلي:

يحاول الكود المقدم التحقق من وجود سلسلة في ملف، يُشار إليها بالمتغير $id ، من خلال قراءة الملف سطراً بسطر. ومع ذلك، فإن الشرط (strpos($buffer, $id) === false) في الحلقة أثناء التحقق بشكل غير صحيح من عدم وجود السلسلة، مما يؤدي إلى النفي المنطقي للنتيجة المرجوة.

الحل المُحسّن:

لتصحيح الموقف، يمكننا تبسيط التعليمات البرمجية باستخدام وظيفة file_get_contents()، التي تقرأ الملف بأكمله في سلسلة. بعد ذلك، يمكن استخدام الدالة strpos() للتحقق من وجود سلسلة $id داخل هذه السلسلة:

if( strpos(file_get_contents("./uuids.txt"),$_GET['id']) !== false) {
    // do stuff
}
باستخدام هذا الأسلوب، نتجنب التكرار عبر الملف سطرًا تلو الآخر، مما يمكن أن يوفر الوقت والذاكرة، خاصة بالنسبة للملفات الكبيرة.

طريقة بديلة (للمتطرفة) الملفات الكبيرة):

بالنسبة للملفات الكبيرة جدًا، فإن الاعتماد على عمليات الملف للبحث عن سلسلة يمكن أن يشكل تحديات في الأداء. كبديل، يمكننا استخدام أمر grep:

if( exec('grep '.escapeshellarg($_GET['id']).' ./uuids.txt')) {
    // do stuff
}
يستخدم هذا الأسلوب الأداة المساعدة grep الخاصة بالنظام للعثور على السلسلة في الملف، مما يقلل من عبء العمل على برنامج PHP النصي نفسه مع توفير كفاءة قابلة للمقارنة.

بيان الافراج أعيد طبع هذه المقالة على: 1729665916 في حالة وجود أي مخالفة، يرجى التواصل مع [email protected] لحذفها
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3