نمایش نتایج 1 تا 3 از 3

نام تاپیک: تابع تولید Slug (آدرس سئو)

  1. #1

    تابع تولید Slug (آدرس سئو)

    با سلام و درود خدمت دوستان

    نمیدونم چرا مطالبی که خیلی مهم هستن کمتر پیدا میشه مثل همین Slug (آدرس سئو)
    اگه دقت کنید وقتی یک تاپیک رو میسازید توی برنامه نویس ، توی آدرس سایت کاراکتر های اضافی از موضوع حذف میشه و بجای Space ها (خط فاصله) قرار میگیره

    خب اگه شما بخواهید اینکارو با کد انجام بدید یا اینکه باید از preg_replace استفاده کنید یا اینکه تک تک کاراکتر ها رو حذف کنید که نیاز به زمان زیادی داره !! در هر دوحالت کیفیت کار خیلی مطلوب نیست

    حالا من تابعی رو برای شما قرار میدم که باهاش میشه براحتی آدرس سئو ساخت و یکی از بهترین توابع برای اینکار هست

    من این تابع رو ویرایش کردم و Replace حروف عربی به فارسی هم گذاشتم که امیدوارم مورد استفاده واقع بشه!

    کد ::

    function url_slug($str, $options = array()) {

    // Make sure string is in UTF-8 and strip invalid UTF-8 characters
    $str = mb_convert_encoding((string)$str, 'UTF-8', mb_list_encodings());

    // Options
    $defaults = array(
    'delimiter' => '-',
    'limit' => null,
    'lowercase' => true,
    'replacements' => array(),
    'transliterate' => false,
    );

    // Merge options
    $options = array_merge($defaults, $options);

    $char_map = array(
    // Latin
    'À' => 'A', 'Á' => 'A', 'Â' => 'A', 'Ã' => 'A', 'Ä' => 'A', 'Å' => 'A', 'Æ' => 'AE', 'Ç' => 'C',
    'È' => 'E', 'É' => 'E', 'Ê' => 'E', 'Ë' => 'E', 'Ì' => 'I', 'Í' => 'I', 'Î' => 'I', 'Ï' => 'I',
    'Ð' => 'D', 'Ñ' => 'N', 'Ò' => 'O', 'Ó' => 'O', 'Ô' => 'O', 'Õ' => 'O', 'Ö' => 'O', 'Ő' => 'O',
    'Ø' => 'O', 'Ù' => 'U', 'Ú' => 'U', 'Û' => 'U', 'Ü' => 'U', 'Ű' => 'U', 'Ý' => 'Y', 'Þ' => 'TH',
    'ß' => 'ss',
    'à' => 'a', 'á' => 'a', 'â' => 'a', 'ã' => 'a', 'ä' => 'a', 'å' => 'a', 'æ' => 'ae', 'ç' => 'c',
    'è' => 'e', 'é' => 'e', 'ê' => 'e', 'ë' => 'e', 'ì' => 'i', 'í' => 'i', 'î' => 'i', 'ï' => 'i',
    'ð' => 'd', 'ñ' => 'n', 'ò' => 'o', 'ó' => 'o', 'ô' => 'o', 'õ' => 'o', 'ö' => 'o', 'ő' => 'o',
    'ø' => 'o', 'ù' => 'u', 'ú' => 'u', 'û' => 'u', 'ü' => 'u', 'ű' => 'u', 'ý' => 'y', 'þ' => 'th',
    'ÿ' => 'y',

    // Latin symbols
    '©' => '(c)',

    // Greek
    'Α' => 'A', 'Β' => 'B', 'Γ' => 'G', 'Δ' => 'D', 'Ε' => 'E', 'Ζ' => 'Z', 'Η' => 'H', 'Θ' => '8',
    'Ι' => 'I', 'Κ' => 'K', 'Λ' => 'L', 'Μ' => 'M', 'Ν' => 'N', 'Ξ' => '3', 'Ο' => 'O', 'Π' => 'P',
    'Ρ' => 'R', 'Σ' => 'S', 'Τ' => 'T', 'Υ' => 'Y', 'Φ' => 'F', 'Χ' => 'X', 'Ψ' => 'PS', 'Ω' => 'W',
    'Ά' => 'A', 'Έ' => 'E', 'Ί' => 'I', 'Ό' => 'O', 'Ύ' => 'Y', 'Ή' => 'H', 'Ώ' => 'W', 'Ϊ' => 'I',
    'Ϋ' => 'Y',
    'α' => 'a', 'β' => 'b', 'γ' => 'g', 'δ' => 'd', 'ε' => 'e', 'ζ' => 'z', 'η' => 'h', 'θ' => '8',
    'ι' => 'i', 'κ' => 'k', 'λ' => 'l', 'μ' => 'm', 'ν' => 'n', 'ξ' => '3', 'ο' => 'o', 'π' => 'p',
    'ρ' => 'r', 'σ' => 's', 'τ' => 't', 'υ' => 'y', 'φ' => 'f', 'χ' => 'x', 'ψ' => 'ps', 'ω' => 'w',
    'ά' => 'a', 'έ' => 'e', 'ί' => 'i', 'ό' => 'o', 'ύ' => 'y', 'ή' => 'h', 'ώ' => 'w', 'ς' => 's',
    'ϊ' => 'i', 'ΰ' => 'y', 'ϋ' => 'y', 'ΐ' => 'i',

    // Turkish
    'Ş' => 'S', 'İ' => 'I', 'Ç' => 'C', 'Ü' => 'U', 'Ö' => 'O', 'Ğ' => 'G',
    'ş' => 's', 'ı' => 'i', 'ç' => 'c', 'ü' => 'u', 'ö' => 'o', 'ğ' => 'g',

    // Russian
    'А' => 'A', 'Б' => 'B', 'В' => 'V', 'Г' => 'G', 'Д' => 'D', 'Е' => 'E', 'Ё' => 'Yo', 'Ж' => 'Zh',
    'З' => 'Z', 'И' => 'I', 'Й' => 'J', 'К' => 'K', 'Л' => 'L', 'М' => 'M', 'Н' => 'N', 'О' => 'O',
    'П' => 'P', 'Р' => 'R', 'С' => 'S', 'Т' => 'T', 'У' => 'U', 'Ф' => 'F', 'Х' => 'H', 'Ц' => 'C',
    'Ч' => 'Ch', 'Ш' => 'Sh', 'Щ' => 'Sh', 'Ъ' => '', 'Ы' => 'Y', 'Ь' => '', 'Э' => 'E', 'Ю' => 'Yu',
    'Я' => 'Ya',
    'а' => 'a', 'б' => 'b', 'в' => 'v', 'г' => 'g', 'д' => 'd', 'е' => 'e', 'ё' => 'yo', 'ж' => 'zh',
    'з' => 'z', 'и' => 'i', 'й' => 'j', 'к' => 'k', 'л' => 'l', 'м' => 'm', 'н' => 'n', 'о' => 'o',
    'п' => 'p', 'р' => 'r', 'с' => 's', 'т' => 't', 'у' => 'u', 'ф' => 'f', 'х' => 'h', 'ц' => 'c',
    'ч' => 'ch', 'ш' => 'sh', 'щ' => 'sh', 'ъ' => '', 'ы' => 'y', 'ь' => '', 'э' => 'e', 'ю' => 'yu',
    'я' => 'ya',

    // Ukrainian
    'Є' => 'Ye', 'І' => 'I', 'Ї' => 'Yi', 'Ґ' => 'G',
    'є' => 'ye', 'і' => 'i', 'ї' => 'yi', 'ґ' => 'g',

    // Czech
    'Č' => 'C', 'Ď' => 'D', 'Ě' => 'E', 'Ň' => 'N', 'Ř' => 'R', 'Š' => 'S', 'Ť' => 'T', 'Ů' => 'U',
    'Ž' => 'Z',
    'č' => 'c', 'ď' => 'd', 'ě' => 'e', 'ň' => 'n', 'ř' => 'r', 'š' => 's', 'ť' => 't', 'ů' => 'u',
    'ž' => 'z',

    // Persian
    'ة' => 'ه', 'ۀ' => 'ه', 'ؤ' => 'و', 'ي' => 'ی', 'ك' => 'ک', 'ء' => '', 'أ' => 'ا', 'إ' => 'ا',
    "٤" => "۴", "٥" => "۵", "٦" => "۶", 'ـ' => '_',

    // Polish
    'Ą' => 'A', 'Ć' => 'C', 'Ę' => 'e', 'Ł' => 'L', 'Ń' => 'N', 'Ó' => 'o', 'Ś' => 'S', 'Ź' => 'Z',
    'Ż' => 'Z',
    'ą' => 'a', 'ć' => 'c', 'ę' => 'e', 'ł' => 'l', 'ń' => 'n', 'ó' => 'o', 'ś' => 's', 'ź' => 'z',
    'ż' => 'z',

    // Latvian
    'Ā' => 'A', 'Č' => 'C', 'Ē' => 'E', 'Ģ' => 'G', 'Ī' => 'i', 'Ķ' => 'k', 'Ļ' => 'L', 'Ņ' => 'N',
    'Š' => 'S', 'Ū' => 'u', 'Ž' => 'Z',
    'ā' => 'a', 'č' => 'c', 'ē' => 'e', 'ģ' => 'g', 'ī' => 'i', 'ķ' => 'k', 'ļ' => 'l', 'ņ' => 'n',
    'š' => 's', 'ū' => 'u', 'ž' => 'z'
    );

    // Make custom replacements
    $str = preg_replace(array_keys($options['replacements']), $options['replacements'], $str);

    // Transliterate characters to ASCII
    if ($options['transliterate']) {
    $str = str_replace(array_keys($char_map), $char_map, $str);
    }

    // Replace non-alphanumeric characters with our delimiter
    $str = preg_replace('/[^\p{L}\p{Nd}]+/u', $options['delimiter'], $str);

    // Remove duplicate delimiters
    $str = preg_replace('/(' . preg_quote($options['delimiter'], '/') . '){2,}/', '$1', $str);

    // Truncate slug to max. characters
    $str = mb_substr($str, 0, ($options['limit'] ? $options['limit'] : mb_strlen($str, 'UTF-8')), 'UTF-8');

    // Remove delimiter from ends
    $str = trim($str, $options['delimiter']);

    return $options['lowercase'] ? mb_strtolower($str, 'UTF-8') : $str;
    }


    مثال نحوه استفاده ::

    header('Content-type: text/plain; charset=utf-8');

    echo "متن آزمایشی تولید آدرس سئو؟?()*&^%$#$#@!!!،,؛][\»«ـ<><ء>>>؟متن آزمایشی تولید آدرس سئو" . "\n";
    echo url_slug(
    'متن آزمایشی تولید آدرس سئو؟?()*&^%$#$#@!!!،,؛][\»«ـ<><ء>>>؟متن آزمایشی تولید آدرس سئو',
    array(
    'delimiter' => '-',
    'limit' => 70,
    'lowercase' => true,
    'replacements' => array(),
    'transliterate' => true,
    )
    ). "\n";

    echo "این یک متن آزمایشی است برای تولید Url Slug" . "\n";
    echo url_slug(
    "این یک متن آزمایشی است برای تولید Url Slug",
    array(
    'delimiter' => '_',
    'limit' => 50,
    'lowercase' => true,
    'transliterate' => true
    )
    ) . "\n";

    توی این 2 مثال میتونید قسمت دوم تابع رو اصلا ارسال نکنید ولی برای تبدیل حروف عربی به فارسی باید transliterate فعال بشه ... اولین قسمت من کاراکتر هایی که در زبان فارسی کاربرد دارن + کاراکتر های انگلیسی رو گذاشتم که اگه دقت کنید تمامی کاراکتر ها حذف میشن!

    سایت منبع (GitHub) :: https://gist.github.com/3098978
    آخرین ویرایش به وسیله MostafaEs3 : سه شنبه 22 مرداد 1392 در 17:54 عصر

  2. #2

    نقل قول: تابع تولید Slug (آدرس سئو)

    از عزیزان کسی می دونه اگر بخوایم با Php ادرس یکتا تولید کنیم ، کاملا مشابه همونی که تو وردپرس هست باس چه کار کنیم
    منظورم اینکه الان وردپرس لینکی مث لینک روبرو رو به صورت کد گذاری شده تو دیتابیس ذخیره می کنه : این یک ازمون مهم است /www.mysite.ir
    یعنی اون لینک تو دیتابیس به شکل پایینی هست :
    http://www.mysite.ir/%D8%A7%DB%8C%D9...A7%D8%B3%D8%AA

  3. #3

    نقل قول: تابع تولید Slug (آدرس سئو)

    تاپیک جداگانه ایجاد کنید و تاپیکهای قدیمی رو از زیر خاک بیرون نکشین. تاپیک قفل شد.

تاپیک های مشابه

  1. پاسخ: 4
    آخرین پست: دوشنبه 10 شهریور 1393, 10:30 صبح
  2. چطوری از تابع تولید عدد تصادفی استفاده کنم؟!؟!؟!؟!؟
    نوشته شده توسط shenil در بخش برنامه نویسی اسمبلی خانواده x86
    پاسخ: 1
    آخرین پست: جمعه 16 دی 1390, 17:46 عصر
  3. سوال: کمک فوری - تابع بست آوردن آدرس Offset آرایه
    نوشته شده توسط arman_Delta2002 در بخش VB.NET
    پاسخ: 0
    آخرین پست: شنبه 28 آذر 1388, 16:30 عصر
  4. قراردادن یک متغیر به جای آدرس تابع!!
    نوشته شده توسط once4ever در بخش C#‎‎
    پاسخ: 2
    آخرین پست: سه شنبه 22 شهریور 1384, 16:18 عصر
  5. ارسال آدرس یک تابع به صورت اشاره گر
    نوشته شده توسط Developer Programmer در بخش برنامه نویسی در Delphi
    پاسخ: 1
    آخرین پست: سه شنبه 09 فروردین 1384, 12:46 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •