ঠিক আছে এইটা বুঝতে পেরে আমাকে কিছুটা সময় লেগেছে, আমি ছাপে ছিলাম যে জালগো উত্পাদনের জন্য অক্ষরগুলির সংমিশ্রণগুলি এগুলির মধ্যে সীমাবদ্ধ । সুতরাং আমি প্রত্যাশা করেছি রেজিক্স অনুসরণ করার জন্য ফ্রেইকগুলি ধরতে।
([\u0300–\u036F\u1AB0–\u1AFF\u1DC0–\u1DFF\u20D0–\u20FF\uFE20–\uFE2F]{2,})
এবং এটি কাজ করে না ...
ক্যাচটি হ'ল উইকির তালিকায় সম্মিলিত অক্ষরের পুরো পরিসর আবরণ করা যায় না।
আমাকে কী ইঙ্গিত দিয়েছিল তা হ'ল "ก้้้้้้้้้้้้้้้้้้้้".charCodeAt(2).toString(16)
= "ই 49" যা সংশ্লেষণের সীমার মধ্যে নয়, এটি 'ব্যক্তিগত ব্যবহারে' পড়ে।
সি # এ তারা নীচে পড়ে UnicodeCategory.NonSpacingMark
এবং নিম্নলিখিত স্ক্রিপ্টগুলি এড়িয়ে যায়:
[Test]
public void IsZalgo()
{
var zalgo = new[] { UnicodeCategory.NonSpacingMark };
File.Delete("IsModifyLike.html");
File.AppendAllText("IsModifyLike.html", "<table>");
for (var i = 0; i < 65535; i++)
{
var c = (char)i;
if (zalgo.Contains(Char.GetUnicodeCategory(c)))
{
File.AppendAllText("IsModifyLike.html", string.Format("<tr><td>{0}</td><td>{1}</td><td>{2}</td><td>A&#{3};&#{3};&#{3}</td></tr>\n", i.ToString("X"), c, Char.GetUnicodeCategory(c), i));
}
}
File.AppendAllText("IsModifyLike.html", "</table>");
}
উত্পন্ন টেবিলটি দেখে আপনি দেখতে পাবেন যে কোনটি স্ট্যাক করে। উইকিতে অনুপস্থিত একটি পরিসীমা হ'ল 06D6-06DC
অন্যটি 0730-0749
।
হালনাগাদ:
এখানে আপডেট হওয়া রেজেক্স যা 'স্বাভাবিক' ব্যাপ্তিতে বাইপাসিত জেলাগুলি সহ সমস্ত জালগো খুঁজে বের করতে পারে।
([\u0300–\u036F\u1AB0–\u1AFF\u1DC0–\u1DFF\u20D0–\u20FF\uFE20–\uFE2F\u0483-\u0486\u05C7\u0610-\u061A\u0656-\u065F\u0670\u06D6-\u06ED\u0711\u0730-\u073F\u0743-\u074A\u0F18-\u0F19\u0F35\u0F37\u0F72-\u0F73\u0F7A-\u0F81\u0F84\u0e00-\u0eff\uFC5E-\uFC62]{2,})
সবচেয়ে শক্ত বিট হ'ল তাদের শনাক্ত করা, একবার আপনি এটি শেষ করে নিলে - উপরের কয়েকটি ভালগুলি সহ প্রচুর সমাধান রয়েছে।
আশা করি এটি আপনার কিছুটা সময় সাশ্রয় করবে।