چالش‌های نام ایران‌سرور


  • محدودیت زمان: ۱ ثانیه
  • محدودیت حافظه: ۲۵۶ مگابایت

در دنیای توسعه نرم‌افزار، ایران‌سرور (IranServer) همواره به دنبال بهترین راه‌حل‌ها بود تا پروژه‌هایش را منظم‌تر و حرفه‌ای‌تر مدیریت کند. یکی از چالش‌های اخیر تیم فنی، ایجاد یک تابع slug بود که بتواند متن‌ها را به قالبی استاندارد و یکنواخت تبدیل کند. تابعی که تمام حروف را کوچک کند، علائم نگارشی را حذف کند و فاصله‌ها را با خط تیره جایگزین کند. اما مشکلی وجود داشت؛ در برخی از متون، نام ایران‌سرور به صورت "Iran Server" نوشته شده بود و این باعث می‌شد که خروجی نهایی یکپارچه نباشد.

توضیح تصویر

تیم توسعه پس از بررسی‌های فراوان، تصمیم گرفت این مشکل را یک بار برای همیشه حل کند. آن‌ها از شما می‌خواهند که این تابع را پیاده‌سازی کنید. یک رشته‌ی متنی حاوی کلمات انگلیسی، اعداد، و علائم نگارشی داریم. هدف این است که رشته را به یک slug تبدیل کنیم.

جزئیات پروژه🔗

پروژه‌ی اولیه را از این لینک دانلود کنید.

شما باید تابع slugify را به شکل زیر پیاده‌سازی کنید تا این کار را انجام دهد:

extensionFromNamesolution.php
<?php

function slugify(string $input): string { 
    // TODO
} 
PHP

ورودی تابع:🔗

  • یک رشته‌ی متنی (حاوی حروف انگلیسی کوچک و بزرگ، اعداد، فاصله، و علائم نگارشی).

خروجی تابع:🔗

  • یک رشته به‌صورت slug که مطابق شرایط زیر پردازش شده است:
    • تمامی حروف به حروف کوچک تبدیل شوند.
    • تمام علائم نگارشی از متن حذف شوند.
    • فاصله‌ها با یک خط تیره (-) جایگزین شوند.
    • اگر کلمات "iran" و "server" به صورت متوالی و به‌ترتیب با یک فاصله ظاهر شوند، به عبارت "iranserver" ادغام شوند.

مثال‌ها🔗

نمونه ورودی ۱:🔗

>> slugify("HeLLo Iran ServEr! PHP / Laravel ConTeSt 2025!");
Bash

نمونه خروجی ۱:🔗

>> hello-iranserver-php-laravel-contest-2025
Bash

نمونه ورودی ۲:🔗

>> slugify(" Hello #World FROM  @IRan SerVeR!  ");
Bash

نمونه خروجی ۲:🔗

>> hello-world-from-iranserver
Bash

آن‌چه باید آپلود کنید🔗

یک فایل PHP با نام solution.php که تابع slugify در آن پیاده‌سازی شده است آپلود کنید.