मैं बस अपना XElement.Parse समाधान की कोशिश की। मैं स्ट्रिंग वर्ग पर एक विस्तार विधि बनाया तो मैं आसानी से कोड का पुन: उपयोग कर सकते हैं: (
public static bool ContainsXHTML(this string input)
{
try
{
XElement x = XElement.Parse("<wrapper>" + input + "</wrapper>");
return !(x.DescendantNodes().Count() == 1 && x.DescendantNodes().First().NodeType == XmlNodeType.Text);
}
catch (XmlException ex)
{
return true;
}
}
एक समस्या यह है मैंने पाया था कि सादा पाठ एम्परसेंड और अक्षरों से कम एक XmlException कारण और संकेत मिलता है कि क्षेत्र एचटीएमएल शामिल है जो गलत)। इसे ठीक करने के लिए, पहले स्ट्रिंग में इनपुट स्ट्रिंग को एम्परसैंड और उनके समकक्ष एक्सएचटीएमएल इकाइयों में परिवर्तित वर्णों से कम होना चाहिए।मैं एक और विस्तार विधि ने लिखा है कि ऐसा करने के लिए:
public static string ConvertXHTMLEntities(this string input)
{
// Convert all ampersands to the ampersand entity.
string output = input;
output = output.Replace("&", "amp_token");
output = output.Replace("&", "&");
output = output.Replace("amp_token", "&");
// Convert less than to the less than entity (without messing up tags).
output = output.Replace("< ", "< ");
return output;
}
अब मैं एक उपयोगकर्ता प्रस्तुत स्ट्रिंग लेने के लिए और जांच करें कि यह निम्नलिखित कोड का उपयोग कर एचटीएमएल शामिल नहीं है कर सकते हैं:
bool ContainsHTML = UserEnteredString.ConvertXHTMLEntities().ContainsXHTML();
मैं सुनिश्चित नहीं हूं अगर यह बुलेट प्रमाण है, लेकिन मुझे लगता है कि यह मेरी स्थिति के लिए काफी अच्छा है।
स्रोत
2008-10-15 16:13:19
, तो आप शायद आप, "एचटीएमएल" और "सादा पाठ" द्वारा क्या मतलब है, उदाहरण के लिए परिभाषित करने के लिए करने जा रहे हैं ऐसा करने के लिए: यदि आप किसी को "" डाल करने के लिए सादा पाठ, में सकेगा.आप लगता है * एक HTML तत्व जैसा है लेकिन यह नहीं है, और यह भी, आप कौन से पात्रों की अनुमति देंगे .. –
Rob
मेरे मामले में, मैं बिल्कुल कोई टैग नहीं कह रहा हूं, इसलिए की अनुमति नहीं दी जाएगी। मेरे उपयोगकर्ता सीमित संख्या में कर्मचारी हैं जो हमारी कंपनी की वेबसाइट में उत्पादों को दर्ज करते हैं। उन्होंने खेतों में थोड़ा सा दुरुपयोग करना शुरू कर दिया है और उन HTML में HTML शामिल करें जिन्हें HTML शामिल करने के लिए डिज़ाइन नहीं किया गया था। –