টেক্সট স্লাগিফাই (ইউআরএল)
টেক্সটকে URL-বান্ধব স্লাগে নরমালাইজ করুন, ছোট হরফ, পৃথককরণকারী, কাস্টম স্টপওয়ার্ড সরানোর সমর্থন সহ।
স্লাগিফাই কেন প্রয়োজন?
🔍 SEO অপ্টিমাইজেশন
URL-এর মধ্যে কীওয়ার্ডগুলি সার্চ ইঞ্জিনকে পেজের কনটেন্ট বুঝতে সাহায্য করে এবং র্যাঙ্কিং বাড়ায়। উদাহরণস্বরূপ, example.com/blog/how-to-learn-javascript হল example.com/blog/123 এর চেয়ে বেশি বান্ধব।
👁️ পঠনযোগ্যতা এবং শেয়ারিং
ব্যবহারকারীরা URL দেখেই বুঝতে পারবে কনটেন্ট কী, সোশ্যাল মিডিয়ায় শেয়ার করার সময় বেশি বান্ধব, এবং মনে রাখা এবং ম্যানুয়ালি টাইপ করা সহজ।
💻 সিস্টেম সামঞ্জস্য
বিশেষ অক্ষরের কারণে ফাইলনাম/URL-এ ত্রুটি এড়ান, প্ল্যাটফর্ম-সামঞ্জস্যপূর্ণ (Windows/Linux/Mac), এবং এনকোডিং সমস্যা এড়ান।
🗄️ ডাটাবেস-বান্ধব
একক আইডেন্টিফায়ার হিসেবে (যেমন ইউজারনেম, ট্যাগ), SQL ইনজেকশন ঝুঁকি এড়ান, এবং ইন্ডেক্সিং এবং কোয়েরি করার জন্য সহজ করুন।
স্লাগিফাই কী?
স্লাগ হল টেক্সটকে URL/ফাইলনাম/আইডেন্টিফায়ার হিসেবে ব্যবহারের জন্য স্ট্যান্ডার্ডাইজ করা একটি শর্ট ফ্রেজ। সাধারণ প্রক্রিয়াগুলির মধ্যে রয়েছে কেস স্ট্যান্ডার্ডাইজেশন, পাঞ্চুয়েশন সরানো, এবং শব্দগুলিকে পৃথককরণকারী দিয়ে যুক্ত করা।
- ASCII প্রাধান্য: অ্যাকসেন্ট এবং সিম্বল সরিয়ে শুধুমাত্র অক্ষর-সংখ্যা এবং স্পেস রাখুন
- ইউনিকোড সামঞ্জস্যপূর্ণ: বেশিরভাগ ভাষার অক্ষরের জন্য NFKD নরমালাইজেশন করে প্রসেস করুন
- URL-বান্ধব: ফলাফল শুধুমাত্র অক্ষর/সংখ্যা এবং পৃথককরণকারী অন্তর্ভুক্ত করবে, পাথে সরাসরি ব্যবহার করা যাবে
প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী
প্রশ্ন: চীনা অক্ষরগুলি কীভাবে প্রক্রিয়া করা হবে?
উত্তর: ডিফল্টরূপে স্বরবর্ণ সরিয়ে ফেলে পিনইন বর্ণগুলি রাখা হয়। শুধুমাত্র চীনা অক্ষর থাকলে ফলাফল খালি হতে পারে। সুতরাং, slugify করার আগে হাতে পিনইনে রূপান্তর করুন বা চীনা পিনইন রূপান্তর টুল ব্যবহার করুন।
প্রশ্ন: আমার ফলাফল কেন খালি?
উত্তর: সম্ভবত আপনার ইনপুট শুধুমাত্র বিরামচিহ্ন/প্রতীক/স্পেস নিয়ে গঠিত, অথবা স্টপওয়ার্ড ফিল্টারিং সক্রিয় করার পর কোনো শব্দ অবশিষ্ট থাকেনি। স্টপওয়ার্ড অপশন বন্ধ করুন বা ইনপুট পরিবর্তন করুন।
প্রশ্ন: পৃথককারী হিসেবে - নাকি _ ব্যবহার করা উচিত?
উত্তর: SEO-এর জন্য - (হাইফেন) ব্যবহার করা প্রস্তাবিত, কারণ Google এটিকে স্পেস হিসেবে বিবেচনা করে; _ (আন্ডারস্কোর) কে একটি সংযোগকারী হিসেবে বিবেচনা করা হয়, যা শব্দ বিভাজনের জন্য অনুপযুক্ত। ফাইল নামের ক্ষেত্রে যেকোনোটি ব্যবহার করা যেতে পারে।
প্রশ্ন: Slug-এর দৈর্ঘ্যের কোনো সীমা আছে?
উত্তর: প্রযুক্তিগতভাবে কোনো সীমা নেই, তবে 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+) এই সুবিধা সমর্থন করে।
কিভাবে প্রোগ্রামিং ভাষার মাধ্যমে স্লাগ তৈরি করবেন?
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("^-+|-+$", "");
}