راکت
حل شده

ساخت اسلاگ فارسی در php خام

10 پاسخ

سلام دوستان
من برای ساخت اسلاگ فارسی در php pure نیاز بع راهنمایی دارم ممنون میشم کمک کنید.ممنونم

ثبت پرسش جدید

پاسخ‌ها

10
سبحان دادخواه
سبحان دادخواه
@SobhanDadkhah

تخصص: دانشجوی برنامه نویسی :)

بهترین پاسخ

سلام.
شما نیاز به ساخت یا استفاده از یک Router دارید.
اون آدرسی که شما فارسی توی مرورگر تایپ میکنید برای وب سرور معنایی نداره . فریمورکی مثل لاراول هم که میبینید با اسلاگ فارسی کار میکنه از طریق روتر این request رو هندل میکنه و شما براش تعریف میکنید که این آدرس درخواست شده باید بره از فیلد Slug توی دیتابیس خونده بشه.

توضیحات بالا فقط برای روشن تر شدن موضوع بود. میتونید خودتون یک روتر بسازید و یا روتر های موجود رو به پروژتون اضافه کنید.
کلیات کار اینطوریه :

  1. آدرس وارد میشه
  2. پارامتر های ریکوئست رو دریافت میکنید و اون بخش فارسی که مثلا مربوط به اسلاگ پست وبلاگتون هست رو جدا میکنید
  3. حالا باید مشخص کنید این ریکوئست چطوری بهش پاسخ داده بشه که مثلا توی مثال بالا میگیم داخل جدول پست ها پستی با اسلاگ وارد شده رو پیدا کن و نمایش بده ( اگر از معماری خاصی مثل MVC استفاده میکنید اون درخواست باید به کنترلر ارسال بشه)

در کل خیلی موارد زیادی باید در نظر گرفته بشه مثل انواع ریکوئست های POST GET و ... .

سعی کردم کلیات رو خیلی روان و ساده توضیح بدم انشالا خودتون با جستجو بیشتر عمیق تر جلو میرید.
موفق باشید

امیر واحدی
امیر واحدی
@amirvahedix

تخصص: برنامه ننویس

سلام
من توی پروژه هام همیشه از این تابع استفاده میکنم برای اسلاگ فارسی:

function slugify($string, $separator = '-') {
        $_transliteration = ["/ö|œ/" => "e",
            "/ü/" => "e",
            "/Ä/" => "e",
            "/Ü/" => "e",
            "/Ö/" => "e",
            "/À|Á|Â|Ã|Å|Ǻ|Ā|Ă|Ą|Ǎ/" => "",
            "/à|á|â|ã|å|ǻ|ā|ă|ą|ǎ|ª/" => "",
            "/Ç|Ć|Ĉ|Ċ|Č/" => "",
            "/ç|ć|ĉ|ċ|č/" => "",
            "/Ð|Ď|Đ/" => "",
            "/ð|ď|đ/" => "",
            "/È|É|Ê|Ë|Ē|Ĕ|Ė|Ę|Ě/" => "",
            "/è|é|ê|ë|ē|ĕ|ė|ę|ě/" => "",
            "/Ĝ|Ğ|Ġ|Ģ/" => "",
            "/ĝ|ğ|ġ|ģ/" => "",
            "/Ĥ|Ħ/" => "",
            "/ĥ|ħ/" => "",
            "/Ì|Í|Î|Ï|Ĩ|Ī| Ĭ|Ǐ|Į|İ/" => "",
            "/ì|í|î|ï|ĩ|ī|ĭ|ǐ|į|ı/" => "",
            "/Ĵ/" => "",
            "/ĵ/" => "",
            "/Ķ/" => "",
            "/ķ/" => "",
            "/Ĺ|Ļ|Ľ|Ŀ|Ł/" => "",
            "/ĺ|ļ|ľ|ŀ|ł/" => "",
            "/Ñ|Ń|Ņ|Ň/" => "",
            "/ñ|ń|ņ|ň|ʼn/" => "",
            "/Ò|Ó|Ô|Õ|Ō|Ŏ|Ǒ|Ő|Ơ|Ø|Ǿ/" => "",
            "/ò|ó|ô|õ|ō|ŏ|ǒ|ő|ơ|ø|ǿ|º/" => "",
            "/Ŕ|Ŗ|Ř/" => "",
            "/ŕ|ŗ|ř/" => "",
            "/Ś|Ŝ|Ş|Ș|Š/" => "",
            "/ś|ŝ|ş|ș|š|ſ/" => "",
            "/Ţ|Ț|Ť|Ŧ/" => "",
            "/ţ|ț|ť|ŧ/" => "",
            "/Ù|Ú|Û|Ũ|Ū|Ŭ|Ů|Ű|Ų|Ư|Ǔ|Ǖ|Ǘ|Ǚ|Ǜ/" => "",
            "/ù|ú|û|ũ|ū|ŭ|ů|ű|ų|ư|ǔ|ǖ|ǘ|ǚ|ǜ/" => "",
            "/Ý|Ÿ|Ŷ/" => "",
            "/ý|ÿ|ŷ/" => "",
            "/Ŵ/" => "",
            "/ŵ/" => "",
            "/Ź|Ż|Ž/" => "",
            "/ź|ż|ž/" => "",
            "/Æ|Ǽ/" => "E",
            "/ß/" => "s",
            "/IJ/" => "J",
            "/ij/" => "j",
            "/Œ/" => "E",
            "/ƒ/" => ""];
        $quotedReplacement = preg_quote($separator, '/');
        $merge = [
            '/[^\s\p{Zs}\p{Ll}\p{Lm}\p{Lo}\p{Lt}\p{Lu}\p{Nd}]/mu' => ' ',
            '/[\s\p{Zs}]+/mu' => $separator,
            sprintf('/^[%s]+|[%s]+$/', $quotedReplacement, $quotedReplacement) => '',
        ];
        $map = $_transliteration + $merge;
        unset($_transliteration);
        return preg_replace(array_keys($map), array_values($map), $string);
    }
حمزه
حمزه
@hamzehhemmati0

@amirvahedix
سلام
من فارسی ک تو url میارم کلا این ارور رو میده :
The requested URL /modmo/products/27/بلوز-مردانه-حوشکل was not found on this server.
Apache/2.4.37 (Win64) PHP/7.2.14 Server at localhost Port 80

شاید پاسخ شما همین‌جا باشد

حمزه
حمزه
@hamzehhemmati0

@SobhanDadkhah
پارامتر فارسی رو که از url جدا کردم باید به کنترل بفرسم و چک کنه چه پستی مثلا این اسلاگ رو داره و با اسلاگ url برابره و اون رو بیاد نمایش بده؟مراحلو درست توضیح دادم؟

سبحان دادخواه
سبحان دادخواه
@SobhanDadkhah

تخصص: دانشجوی برنامه نویسی :)

@hamzehhemmati0
بله. توضیحتون درسته.
توی معماری MVC دقیقا همینه. ریکوئست بررسی میشه و به کنترلر فرستاده میشه و همراه اون ریکوئست پارامتر فارسی که گفتین هم به کنترلر میره و اونجا هرکاری میشه کرد . مثلا داخل دیتابیس دنبال همچین اسلاگی بگردین و بقیه داستان. اما اگر اشتباه نکنم توی لاراول این موارد اتوماتیک انجام میشه که بهش میگن Route Model Binding.
در کل شاید اطلاعات بنده هم کمی ناقص باشه اما پیشنهاد میکنم حتما راجع به روتر سرچ کنید خیلی موارد آموزنده ای داره

حمزه
حمزه
@hamzehhemmati0
سبحان دادخواه
سبحان دادخواه
@SobhanDadkhah

تخصص: دانشجوی برنامه نویسی :)

خواهش ميكنم موفق باشيد 🌹

جواد خالقی
جواد خالقی
@jkh

تخصص: توسعه دهنده بک اند

این قطعه کد عالیه. منم از همین استفاده میکنم

محسن
محسن
@mu3fi

تخصص: برنامه نویس

سلام، عالی بود

ابوالفضل
ابوالفضل
@amata

تخصص: برنامه نويس

slug انگلیسی به سئو کمک میکنه
چه اصراری داری از فارسی استفاده کنی؟
دلیل خاصی داره؟

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام