با استفاده از PHP و تابع preg_split، تابعی بنویسید که یک رشته حاوی هدرهای HTTP را تجزیه کرده و نام و مقدار هر هدر را پس از اعتبارسنجی بازگرداند.

1.0 بازدید آخرین ویرایش در 221 روز قبل ساعت 01:31

0.0

برای حل، ابتدا با preg_split('/\r\n|\r|\n/', $input, -1, PREG_SPLIT_NO_EMPTY) رشته را به خطوط تقسیم کنید، سپس برای هر خط با preg_split('/:\s*/', $line, 2) فقط یک بار در اولین دونقطه جدا کنید تا نام و مقدار هدر به‌دست آید. نام هدر را با یک regex ساده مانند '/^[A-Za-z0-9-]+$/' اعتبارسنجی کنید، مقدار را trim و از وجود \r یا \n برای جلوگیری از header injection پاک کنید و در نهایت آرایهٔ انجمنی (associative) یا ترکیب مقادیر تکراری (با کاما) بازگردانید. نکته‌ها: از پارامتر limit در preg_split استفاده کنید، از PREG_SPLIT_NO_EMPTY بهره ببرید و طول/کاراکترهای مقدار را برای امنیت بررسی کنید.

توسط پژوهشگر در 221 روز قبل ساعت 01:31
دسته بندی ها: PHP PHP for beginner
arash در 221 روز قبل ساعت 12:58

برای ایمنی و کارایی، خطوط هدرها را با یک بار استفاده از preg_split('/\r\n|\r|\n/', $input, -1, PREG_SPLIT_NO_EMPTY) تقسیم کن. سپس هر خط را با یک بار استفاده از preg_split('/:\s*/', $line, 2) جدا کن تا نام و مقدار هدر به دست آید. نام را با regex ساده‌ای مانند '/^[A-Za-z0-9-]+$/' اعتبارسنجی کن و مقدار را با trim و حذف کاراکترهای CR/LF برای جلوگیری از header injection پاک کن. در نهایت مقادیر تکراری را به صورت آرایه انجمنی بازگردان یا با ترکیب با کاما کنار هم بیاور و طول/کاراکترهای مقدار را برای امنیت بررسی کن.

گزارش

1 پاسخ

جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من

در حال بارگیری...
ورود به حساب کاربری