بحث واستبدال النص دون تمييز حالة الأحرف
قد تؤدي اختلافات حالة الأحرف إلى إخفاء نص مكرر عن الاستبدال القائم على التطابق التام.
شغّل الأداة مجانًا
فقد تضم الوثيقة Brand وBRAND وbrand وBrAnD مع أن جميعها تشير إلى الشيء نفسه. تبحث أداة البحث والاستبدال هذه عن كل صيغة لمصطلح حرفي دون اعتبار لحالة الأحرف، ثم تستبدلها جميعا بقيمة واحدة. وتعيد النص الناتج وعدد التغييرات، مما يسهل مراجعة النتيجة أو إدراجها في عملية آلية. العملية حتمية، ولا تستخدم خدمة شبكية، وتعامل علامات الترقيم في عبارة البحث كأحرف فعلية. يمكنكم تشغيلها في المتصفح لإجراء تعديلات سريعة، أو استدعاء API بسعر $0.002 لكل عنصر ضمن سير عمل أوسع.
استبدلوا جميع اختلافات حالة الأحرف في عملية واحدة
قد يفوّت البحث والاستبدال بالتطابق التام الاختلافات التي تجعل النص الحقيقي غير متسق. فقد يرد اسم المنتج بحرف أول كبير في بداية الجملة، وبأحرف كبيرة كاملة في العنوان، وبأحرف صغيرة في الملاحظات، وبصيغة مختلطة بعد أن يحرره عدة أشخاص. تبحث هذه الإمكانية من دون مراعاة حالة الأحرف، ولذلك يعثر طلب واحد على Product وPRODUCT وproduct وغيرها من صيغ المصطلح الحرفي نفسه. تُستبدل كل مطابقة غير متداخلة من بداية النص المصدر إلى نهايته. وتُدرج قيمة الاستبدال تماما كما تقدمونها، مما يتيح توحيد جميع الصيغ في تهجئة معتمدة أو حذفها باستخدام سلسلة استبدال فارغة. المطابقة حرفية وليست تعبيرا نمطيا. فإذا احتوى البحث على نقطة أو قوس مربع أو علامة جمع أو استفهام، تبحث الأداة عن الرمز الفعلي ولا تفعّل صياغة خاصة. يعيد الرد النتيجة المكتملة وعدد عمليات الاستبدال، وبذلك يمكنكم التمييز فورا بين تنظيف ناجح وطلب لم يجد أي مطابقة. ولأن الخوارزمية لا تستخدم الشبكة أو العشوائية أو الوقت، فإن المدخلات المتطابقة تنتج دائما مخرجات متطابقة في المتصفح وAPI والاختبارات والعمليات المجدولة.
قدموا سلاسل واضحة واقرؤوا النتيجة بدقة
قدموا ثلاثة حقول: يحتوي text على المادة المصدر، ويحتوي search على الكلمة أو العبارة الحرفية المطلوب العثور عليها، ويحتوي replacement على السلسلة التي ستحل محلها. يجب أن تكون الحقول الثلاثة سلاسل نصية، مع جواز أن يكون text وreplacement فارغين. ويجب أن يضم search حرفا واحدا على الأقل، لأن البحث الفارغ لا يملك حدا مفيدا وقد يعني وجود مطابقة بين كل زوج من الأحرف. تُرفض الأنواع غير الصالحة وعبارة البحث الفارغة كمدخل غير صالح بدلا من تحويلها ضمنيا. وتتجاهل قاعدة المطابقة حالة الأحرف دائما؛ فلا يوجد خيار قد تنسون تفعيله ولا وضع تطابق تام مخفي خلف قيمة افتراضية. عند النجاح، يحتوي result على السلسلة المحولة كاملة، ويسجل count عدد الاستبدالات غير المتداخلة، بينما يعرض search وreplacement القيمتين المطبقتين. ويظل count الذي يساوي صفرا نتيجة صحيحة مع بقاء المصدر من دون تغيير. إذا ظهر مصطلح البحث داخل كلمة أطول فسيُستبدل هناك أيضا، لأن العملية تتعامل مع سلسلة فرعية حرفية ولا تحلل الكلمات الكاملة لغويا. أضيفوا مسافات أو علامات ترقيم حول search إذا احتجتم إلى حد حرفي أضيق، وراجعوا count قبل النشر حين يتوقع سير العمل عددا محددا من التغييرات.
استخدموا استبدالا متوقعا في التحرير والأتمتة
تلائم هذه الأداة المهام التي تكون فيها حالة الأحرف غير المتسقة هي المشكلة، بينما يكون الاستبدال المطلوب واضحا. يمكن للمحررين توحيد اسم علامة أو قسم أو ميزة أو شخص في نص منسوخ قبل إدخاله إلى نظام إدارة المحتوى. ويمكن لفرق الدعم تحديث الأوامر وتسميات المنتجات في القوالب حتى لو كتب المؤلفون السابقون التسمية القديمة بصيغ مختلفة. كما يستطيع المطورون تنظيف بيانات الاختبار ومدخلات الترحيل ومقاطع الإعدادات والتقارير المولدة من دون إضافة اعتماد على التعبيرات النمطية. للاستخدام التفاعلي، الصقوا المصدر في مشغل المتصفح، وأدخلوا سلسلتي البحث والاستبدال الحرفيتين، ثم قارنوا count المعاد بالعدد المتوقع. وللأتمتة، أرسلوا الحقول الثلاثة نفسها عبر API بسعر $0.002 لكل عنصر، ثم خزّنوا result أو مرروه إلى التحويل التالي. اختبروا مثالا واحدا على الأقل بصيغ أحرف مختلطة ومثالا بلا مطابقات إذا كان الاستبدال جزءا من عملية نشر مهمة. تستبدل العملية كل الظهورات غير المتداخلة ولا تحفظ نمط حالة الأحرف الخاص بكل مطابقة؛ فجميعها تتلقى قيمة الاستبدال نفسها. وهي لا تفهم عناصر HTML أو بنية الوثيقة أو القواعد اللغوية أو حدود الكلمات. استخدموا محرر وثائق منظم أو أداة تعبيرات نمطية عندما تكون هذه الفروق ضرورية. أما للاستبدال الحرفي الذي يتجاهل حالة الأحرف، فيحافظ هذا العقد المحدد على سلوك واضح وقابل للتكرار.
حالات الاستخدام
توحيد حالة الأحرف في اسم العلامة
حوّلوا الصيغ الكبيرة والصغيرة وصيغة العنوان والصيغ المختلطة لاسم العلامة إلى قيمة واحدة معتمدة.
تحديث قوالب الدعم
استبدلوا تسمية منتج قديمة في وحدات الماكرو حتى عندما يكتبها المؤلفون بحالات أحرف مختلفة.
تنظيف بيانات الترحيل
وحّدوا أسماء الحالات أو الرموز أو الوسوم الحرفية قبل استيراد النص إلى نظام جديد.
الأسئلة الشائعة
هل تُستبدل جميع صيغ حالة الأحرف لمصطلح البحث؟
نعم. تتجاهل الأداة حالة الأحرف وتستبدل كل مطابقة حرفية غير متداخلة بالقيمة الدقيقة التي تقدمونها.
هل يمكن أن يتضمن البحث رموز التعبيرات النمطية؟
نعم. تُعامل النقاط والأقواس المربعة وعلامات الجمع والاستفهام كأحرف فعلية، لا كصياغة نمطية.
هل يمكن حذف جميع المطابقات؟
نعم. أرسلوا سلسلة استبدال فارغة، مع ضرورة احتواء مصطلح البحث على حرف واحد على الأقل.
ماذا يحدث إذا لم توجد أي مطابقة؟
ينجح الطلب ويحافظ على النص الأصلي ويعيد count بقيمة صفر.
ما تكلفة استخدام API؟
تبلغ تكلفة كل عنصر عبر API مقدار $0.002. ويتوفر مشغل المتصفح للعمليات المحلية السريعة من دون استدعاء API.
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/str/replace-ci \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"Draft, DRAFT, and draft all mean the same thing.","search":"draft","replacement":"final"}'const res = await fetch("https://api.kit.forhosting.com/str/replace-ci", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "Draft, DRAFT, and draft all mean the same thing.",
"search": "draft",
"replacement": "final"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/str/replace-ci",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "Draft, DRAFT, and draft all mean the same thing.",
"search": "draft",
"replacement": "final"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/str/replace-ci", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"Draft, DRAFT, and draft all mean the same thing.","search":"draft","replacement":"final"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"Draft, DRAFT, and draft all mean the same thing.","search":"draft","replacement":"final"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/str/replace-ci", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"text": "Draft, DRAFT, and draft all mean the same thing.",
"search": "draft",
"replacement": "final"
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "str.replace_ci",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |