أداة تحويل النص إلى رابط (Slug)

أداة احترافية لتحويل النص إلى روابط URL، تعمل على توحيد النص ليكون مناسبًا للعناوين، مع دعم التحويل إلى أحرف صغيرة، والفواصل المخصصة، وإزالة كلمات الوقف الإنجليزية. تستخدم التطبيع Unicode للتعامل مع معظم أحرف اللغات، مما يضمن أن الروابط الناتجة تتبع أفضل ممارسات تحسين محركات البحث (SEO). مثالية لروابط مقالات المدونات، وتسمية الملفات، ومعرّفات قاعدة البيانات، وغيرها من الحالات. تتم المعالجة بالكامل محليًا لحماية خصوصيتك—لا حاجة للتسجيل. توفر إرشادات استخدام مفصلة وتوصيات بأفضل الممارسات لمساعدتك في إنشاء روابط عالية الجودة.

المعاملات والإدخال

موصى به: استخدم - أو _، بطول 1~3 أحرف

النتيجة

لماذا تستخدم أداة تحويل النص إلى رابط؟

🔍 تحسين محركات البحث (SEO)

تساعد الكلمات الرئيسية في عناوين URL محركات البحث على فهم محتوى الصفحة وتحسين ترتيبها. على سبيل المثال، example.com/blog/how-to-learn-javascript أكثر فعالية من example.com/blog/123.

👁️ سهولة القراءة والمشاركة

يمكن للمستخدمين فهم المحتوى فورًا من عنوان URL. تكون الروابط المختصرة (Slugs) أسهل للمشاركة على وسائل التواصل الاجتماعي وأسهل في الحفظ أو الكتابة يدويًا.

💻 التوافق مع الأنظمة

تجنب الأخطاء الناتجة عن الأحرف الخاصة في أسماء الملفات أو عناوين URL. يضمن التوافق عبر المنصات المختلفة (Windows/Linux/macOS) ويمنع مشاكل الترميز.

🗄️ ملائم لقواعد البيانات

استخدمه كمعرّفات فريدة (مثل أسماء المستخدمين والوسوم) لتقليل مخاطر حقن SQL وتحسين أداء الفهرسة والاستعلامات.

ما هو تحويل النص إلى رابط (Slugify)؟

الرابط (Slug) هو نسخة مختصرة وموحدة من النص تُستخدم كعنوان URL، أو اسم ملف، أو مُعرّف. تشمل العمليات الشائعة توحيد حالة الأحرف، وإزالة علامات الترقيم، ووصل الكلمات بفاصل.

  • الأولوية لـ ASCII: إزالة الحروف المشكّلة والرموز، والاحتفاظ فقط بالأحرف الأبجدية والأرقام والمسافات
  • متوافق مع Unicode: تطبيع معظم أحرف اللغات باستخدام NFKD قبل المعالجة
  • آمن للـ URL: المخرجات تحتوي فقط على أحرف وأرقام وفواصل—جاهزة للاستخدام المباشر في المسارات

حالات الاستخدام

روابط منشورات المدونة

كيف تتعلم جافاسكريبت؟

how-to-learn-javascript

تسمية الملفات

Product Requirements Document v2.0.docx

product-requirements-v2-0.docx

معرّف قاعدة البيانات

用户-张三

user-zhang-san

الأسئلة الشائعة

س: كيف يتم التعامل مع الأحرف الصينية؟

ج: افتراضيًا، تتم إزالة علامات التشكيل والحروف الصوتية مع الاحتفاظ بالأبجدية اللاتينية. قد يصبح النص الصيني الخالص فارغًا؛ لذا يُنصح بالتحويل يدويًا إلى بينيين قبل إنشاء الرابط المختصر، أو استخدام أداة تحويل النصوص الصينية إلى بينيين.

س: لماذا النتيجة فارغة؟

ج: قد يتكون مدخلك بالكامل من علامات الترقيم أو الرموز أو المسافات، أو قد تمت إزالة جميع الكلمات بسبب تصفية كلمات الإيقاف (Stopwords). حاول تعطيل خيار كلمات الإيقاف أو تعديل الإدخال الخاص بك.

س: هل يجب استخدام - أم _ كفاصل؟

ج: لتحسين محركات البحث (SEO)، استخدم - (الشرطة)، حيث تعامل Google معها كمسافة؛ أما _ (الشرطة السفلية) فتُعامل كرمز ربط مما يعيق فصل الكلمات. بالنسبة لأسماء الملفات، كلاهما مقبول.

س: هل هناك حد لطول الرابط المختصر (Slug)؟

ج: لا يوجد حد تقني، لكن يُنصح بالحفاظ على طول الرابط المختصر أقل من 50 حرفًا لتحسين عرض العنوان وتحسين محركات البحث. قد تقوم محركات البحث بقص الروابط المختصرة الطويلة جدًا.

أفضل الممارسات

الممارسات الموصى بها

  • ✓ اجعله قصيرًا (يُوصى بأقل من 50 حرفًا)
  • ✓ تجنب الأحرف الخاصة؛ استخدم فقط الحروف والأرقام والفواصل
  • ✓ استخدم الأحرف الصغيرة لتجنب مشاكل حساسية حالة الأحرف
  • ✓ احذف الكلمات المتوقفة لتحسين الكثافة الدلالية

تجنب هذه الممارسات

  • ✗ لا تُدرج معلومات حساسة (مثل المعرفات، والبريد الإلكتروني، وكلمات المرور)
  • ✗ لا تستخدم أحرفًا خاصة (مثل @#$%^&*)
  • ✗ لا تحتفظ بالمسافات أو الفواصل المتتالية
  • ✗ لا تكرّر الكلمة نفسها

التفاصيل التقنية

التطبيع باستخدام Unicode:

يستخدم تفكيك NFKD وإزالة علامات التشكيل المجمعة (\p{M})، مما يحوّل Café إلى Cafe. يدعم معظم الأحرف اللاتينية.

قائمة الكلمات المتوقفة:

مبنية على الكلمات الإنجليزية الشائعة (a/an/the/and/or/of/to/in/on/for/at/by/with)؛ قابلة للتخصيص. تتطلب كلمات التوقف الصينية معالجة منفصلة.

التوافق مع المتصفحات:

يتطلب دعم ES6+ والتعبيرات النمطية لـ Unicode (\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("^-+|-+$", "");
}