ٹیکسٹ سلگیف (یو آر ایل)

ٹیکسٹ کو URL دوست slug میں نرمالائز کریں، جس میں چھوٹے حروف، الگ کرنے والے علامات، اور مخصوص رکاوٹی الفاظ کو ختم کرنے کا سپورٹ شامل ہے۔

پیرامیٹرز اور ان پٹ

تجویز کیا جاتا ہے کہ - یا _ استعمال کیا جائے، 1 سے 3 کریکٹرز کی لمبائی

نتیجہ

Slugify کیوں ضروری ہے؟

🔍 SEO بہتری

URL میں موجود کلیدی الفاظ سرچ انجن کو صفحہ کے مواد کو سمجھنے میں مدد کرتے ہیں اور رینکنگ بہتر کرتے ہیں۔ جیسے example.com/blog/how-to-learn-javascript، example.com/blog/123 کے مقابلے میں زیادہ دوستانہ ہے۔

👁️ پڑھنے کی آسانی اور شیئرنگ

صارفین URL دیکھ کر فوری طور پر مضمون کا اندازہ لگا سکتے ہیں، سوشل میڈیا پر شیئر کرنے اور یاد رکھنے یا ہاتھ سے ٹائپ کرنے کے لیے زیادہ موزوں ہے۔

💻 سسٹم کی مطابقت

فائل نام/URL میں خاص کریکٹرز کی وجہ سے ہونے والی غلطیوں سے بچیں، پلیٹ فارم کی مطابقت (Windows/Linux/Mac)، اور کوڈنگ مسائل سے بچیں۔

🗄️ ڈیٹا بیس دوست

یکتا شناخت کے طور پر استعمال کریں (جیسے صارف نام، ٹیگز)، SQL انجیکشن کے خطرے کو کم کریں، اور انڈیکس اور کوئری کے لیے آسان بنائیں۔

Slugify کیا ہے؟

Slug ایک مختص شدہ فریز ہے جو ٹیکسٹ کو URL/فائل نام/شناسائی کے لیے نرمالائز کرنے کے بعد استعمال ہوتا ہے۔ عام عمل میں حروف کی صورت ایک جیسی کرنا، نشانات کو ختم کرنا، اور الفاظ کو الگ کرنے والے علامات سے جوڑنا شامل ہے۔

  • ASCII ترجیح: اکاؤنٹس اور علامات کو ختم کریں، صرف الفاظ اور اعداد اور خالی جگہیں رکھیں
  • Unicode مطابقت: زیادہ تر زبانوں کے حروف کو NFKD نرمالائز کر کے پروسیس کریں
  • URL دوست: نتیجہ صرف الفاظ، اعداد اور الگ کرنے والے علامات پر مشتمل ہو، جسے براہ راست راستہ کے طور پر استعمال کیا جا سکے

استعمال کے مناظر

بلاگ آرٹیکل URL

جاواسکرپٹ کیسے سیکھیں؟

how-to-learn-javascript

فائل کا نام

پروڈکٹ ضروریات دستاویز v2.0.docx

product-requirements-v2-0.docx

ڈیٹا بیس شناخت کنندہ

صارف-چانگ سان

user-zhang-san

عام سوالات

Q: چینی حروف کو کیسے سنبھالا جائے گا؟

A: ڈیفالٹ طور پر اکاؤنٹس کو ختم کر دیا جائے گا اور صرف پنیین حروف رکھے جائیں گے۔ صرف چینی حروف خالی ہو سکتے ہیں، اس لیے slugify کرنے سے پہلے ہاتھ سے پنیین میں تبدیل کریں یا چینی پنیین تبدیلی کا ٹول استعمال کریں۔

Q: میرا نتیجہ خالی کیوں ہے؟

A: ممکنہ طور پر آپ کا ان پٹ صرف علامات/سگنلز/خالی جگہیں ہیں، یا اسٹاپ ورڈز فلٹر کو بند کرنے کے بعد کوئی لفظ باقی نہیں رہا۔ اسٹاپ ورڈز کا آپشن بند کریں یا ان پٹ تبدیل کریں۔

Q: الگ کرنے والے کے لیے - یا _ استعمال کرنا چاہیے؟

A: SEO کے لیے - (ہائیفن) تجویز کیا جاتا ہے، گوگل اسے خالی جگہ کی طرح سمجھتا ہے؛ _ (نیچے کی لکیر) کو جوڑنے والے کے طور پر سمجھا جاتا ہے، جس سے الفاظ کو الگ کرنا مشکل ہوتا ہے۔ فائل کے نام کے لیے کوئی بھی استعمال کیا جا سکتا ہے۔

Q: Slug کی لمبائی میں کوئی حد ہے؟

A: ٹیکنیکل طور پر کوئی حد نہیں، لیکن URL دکھانے اور SEO کے لیے 50 حروف تک محدود رکھنا بہتر ہے۔ زیادہ لمبے slug کو سرچ انجن میں کاٹ دیا جا سکتا ہے۔

بہترین طریقہ کار

تجویز کردہ عمل

  • مختصر رکھیں (تجویز کردہ < 50 حروف)
  • خصوصی حروف سے گریز کریں، صرف حروف/انگریزی اعداد/الگ کرنے والے استعمال کریں
  • حروف کو چھوٹے حروف میں تبدیل کریں تاکہ کیس سینسٹیویٹی کے مسائل سے بچا جا سکے
  • معنی کی گنجائش بڑھانے کے لیے اسٹاپ ورڈز کو ختم کریں

تجنب کریں

  • حساسی معلومات (جیسے ID، ای میل، پاس ورڈ) شامل نہ کریں
  • خصوصی حروف (جیسے @#$%^&*) استعمال نہ کریں
  • خالی جگہیں یا متعدد الگ کرنے والے نہ چھوڑیں
  • ایک ہی لفظ کو دہرائیں نہیں

ٹیکنیکل تفصیل

یونیکوڈ نارملائزیشن:

NFKD ڈیکمپوزیشن + کمبننگ اکاؤنٹس (\p{M}) کو ختم کرنا، جس سے Café کو Cafe میں تبدیل کیا جاتا ہے۔ زیادہ تر لاطینی زبانوں کے حروف کو سپورٹ کرتا ہے۔

اسٹاپ ورڈز کی فہرست:

انگریزی عام الفاظ (a/an/the/and/or/of/to/in/on/for/at/by/with) پر مبنی، جسے مزید توسیع کی جا سکتی ہے۔ چینی اسٹاپ ورڈز کے لیے الگ سے پردازش درکار ہے۔

براؤزر کمپیٹیبلٹی:

ES6+ اور یونیکوڈ ریگیولر ایکسپریشنز (\p{...}) کی سپورٹ درکار ہے۔ جدید براؤزرز (Chrome 64+، Firefox 78+، Safari 11.1+) سب کو سپورٹ کرتے ہیں۔

پروگرامنگ زبان کے ذریعے Slug کیسے بنائیں؟

JavaScript

function slugify(text) {
  return text
    .toLowerCase()
    .normalize("NFKD")
    .replace(/[\u0300-\u036f]/g, "")
    .replace(/[^\w\s-]/g, "")
    .trim()
    .replace(/[\s_-]+/g, "-")
    .replace(/^-+|-+$/g, "");
}

PHP

function slugify($text) {
  $text = mb_strtolower($text);
  $text = iconv("UTF-8", "ASCII//TRANSLIT", $text);
  $text = preg_replace("/[^\w\s-]/", "", $text);
  $text = preg_replace("/[\s_-]+/", "-", $text);
  return trim($text, "-");
}

Python

import re
import unicodedata

def slugify(text):
    text = text.lower()
    text = unicodedata.normalize("NFKD", text)
    text = text.encode("ascii", "ignore").decode("ascii")
    text = re.sub(r"[^\w\s-]", "", text)
    text = re.sub(r"[\s_-]+", "-", text)
    return text.strip("-")

Go

import (
    "regexp"
    "strings"
    "golang.org/x/text/unicode/norm"
)

func Slugify(text string) string {
    text = strings.ToLower(text)
    text = norm.NFKD.String(text)
    re := regexp.MustCompile(`[^\w\s-]`)
    text = re.ReplaceAllString(text, "")
    re = regexp.MustCompile(`[\s_-]+`)
    text = re.ReplaceAllString(text, "-")
    return strings.Trim(text, "-")
}

Ruby

require "unicode"

def slugify(text)
  text = text.downcase
  text = Unicode.nfkd(text).gsub(/[^\x00-\x7F]/, "")
  text = text.gsub(/[^\w\s-]/, "")
  text = text.gsub(/[\s_-]+/, "-")
  text.strip.gsub(/^-+|-+$/, "")
end

Java

import java.text.Normalizer;

public static String slugify(String text) {
    text = text.toLowerCase();
    text = Normalizer.normalize(text, Normalizer.Form.NFKD);
    text = text.replaceAll("[^\\w\\s-]", "");
    text = text.replaceAll("[\\s_-]+", "-");
    return text.replaceAll("^-+|-+$", "");
}