Hallo, ich habe ein großes problem.
Ich habe ein Code geschrieben um manche Wörter zu sperren die in der Datenbank eingetragen sind.
Mein Problem: Wenn z.B. das Wort: Hallo gesperrt ist, ist Halló gesperrt aber wenn ich HallÒ schreibe kommt es durch. Und wenn ich HÀllo schreibe wird es auch gefiltert und kommt nicht durch. Meine Frage, wieso werden die Wörter mit großes Ò nicht blockiert aber die kleinen mit ó werden blockiert wie es sein soll.
Hier der Code:
Was habe ich falsch gemacht das ó gefiltert wird bzw. gesperrt wie es auch sein soll, aber Ò nicht gesperrt wird ?
Ich bitte um Hilfe, danke.
Mit freundlichen Grüßen
Ich habe ein Code geschrieben um manche Wörter zu sperren die in der Datenbank eingetragen sind.
Mein Problem: Wenn z.B. das Wort: Hallo gesperrt ist, ist Halló gesperrt aber wenn ich HallÒ schreibe kommt es durch. Und wenn ich HÀllo schreibe wird es auch gefiltert und kommt nicht durch. Meine Frage, wieso werden die Wörter mit großes Ò nicht blockiert aber die kleinen mit ó werden blockiert wie es sein soll.
Hier der Code:
C#-Quellcode
- {
- public class AntiAd
- {
- public List<string> IllegalWords = new List<string>();
- public AntiAd()
- {
- IllegalWords.Clear();
- using (DatabaseClient dbClient = GoldTree.GetDatabase().GetClient())
- {
- DataTable dt1 = dbClient.ReadDataTable("SELECT * FROM wordfilter");
- foreach (DataRow dr in dt1.Rows)
- {
- IllegalWords.Add((string)dr["word"]);
- }
- }
- }
- public void Refresh()
- {
- IllegalWords.Clear();
- using (DatabaseClient dbClient = GoldTree.GetDatabase().GetClient())
- {
- DataTable dt1 = dbClient.ReadDataTable("SELECT * FROM wordfilter");
- foreach (DataRow dr in dt1.Rows)
- {
- IllegalWords.Add((string)dr["word"]);
- }
- }
- }
- public bool ContainsIllegalWord(string t)
- {
- string s = Utf8ToUtf16(t).ToLower();
- string txt = s.Replace("+", "").Replace(" ", "").Replace("|", "").Replace("?", "").Replace("/", "").Replace("'", "").Replace('"'.ToString(), "");
- string txt1 = txt.Replace("*", "").Replace("~", "").Replace("(", "").Replace(")", "").Replace("=", "").Replace("&", "").Replace("§", "").Replace(",", "").Replace("[", "").Replace("^", "").Replace("´", "").Replace("`", "").Replace("_", "").Replace("°", "");
- string txt3 = txt1.Replace("û", "u").Replace("ú", "u").Replace("ù", "u").Replace("â", "a").Replace("á", "a").Replace("à", "a").Replace("@", "a").Replace("ô", "O").Replace("ó", "o").Replace("ò", "o").Replace("ê", "e").Replace("é", "e").Replace("è", "e").Replace("$", "s").Replace("€", "e").Replace("î", "i").Replace("í", "i").Replace("ì", "i");
- string txt2 = txt3.Replace("!", "").Replace("?", "").Replace(":", "").Replace("-", "").Replace(";", "").Replace("<", "").Replace(">", "").Replace("$", "").Replace("#", "").Replace("¦", "").Replace("}", "").Replace("{", "").Replace("]", "");
- string txt4 = txt2.Replace("ä", "a").Replace("ü", "u").Replace("ö", "o").Replace("ë", "e").Replace("ï", "i").Replace("ÿ", "y");
- string txt5 = txt4.Replace(".", "").Replace("-", "").Replace("3", "").Replace("Ø", "");
- foreach (string word in IllegalWords)
- {
- string word2 = word.ToLower();
- if (txt5.Contains(word2) || txt4.Contains(word2))
- {
- return true;
- }
- }
- return false;
- }
- private static string Utf8ToUtf16(string utf8String)
- {
- List<byte> list = new List<byte>(utf8String.Length);
- for (int i = 0; i < utf8String.Length; i++)
- {
- byte b = (byte)utf8String[i];
- if (b > 0)
- {
- list.Add(b);
- }
- }
- return Encoding.UTF8.GetString(list.ToArray());
- }
- }
- }
Was habe ich falsch gemacht das ó gefiltert wird bzw. gesperrt wie es auch sein soll, aber Ò nicht gesperrt wird ?
Ich bitte um Hilfe, danke.
Mit freundlichen Grüßen