حمزه
4 سال پیش توسط حمزه مطرح شد
10 پاسخ

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

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


ثبت پرسش جدید
سبحان دادخواه
تخصص : دانشجوی برنامه نویسی :)
@SobhanDadkhah 4 سال پیش آپدیت شد
2

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

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

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

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

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


امیر واحدی
تخصص : برنامه ننویس
@amirvahedix 4 سال پیش مطرح شد
1

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

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 4 سال پیش مطرح شد
0

@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


سبحان دادخواه
تخصص : دانشجوی برنامه نویسی :)
@SobhanDadkhah 4 سال پیش آپدیت شد
2

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

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

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

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

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


حمزه
@hamzehhemmati0 4 سال پیش مطرح شد
1

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


سبحان دادخواه
تخصص : دانشجوی برنامه نویسی :)
@SobhanDadkhah 4 سال پیش مطرح شد
0

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


حمزه
@hamzehhemmati0 4 سال پیش مطرح شد
سبحان دادخواه
تخصص : دانشجوی برنامه نویسی :)
@SobhanDadkhah 4 سال پیش مطرح شد
0

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


جواد خالقی
تخصص : توسعه دهنده بک اند
@jkh 3 سال پیش مطرح شد
0

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


محسن
تخصص : برنامه نویس
@mu3fi 2 سال پیش مطرح شد
0

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


ابوالفضل
تخصص : برنامه نويس
@amata 2 سال پیش مطرح شد
0

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


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

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