كيفية التحقق مما إذا كان الملف يحتوي على سلسلة في 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 النصي نفسه مع توفير كفاءة قابلة للمقارنة. تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3