Доступ к архиву

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Анти-мат

Статус
В этой теме нельзя размещать новые ответы.

Mr White

Ученик
Давным-давно хотел написать анти-мат, но так руки и не доходили. Этот анти-мат проверяет строку на запрещённые слова, учитывая исключения(оскор***ть, например). Найденные плохие слова заменяет на *(сколько в слове символов, столько и звёздочек).

PHP:
stock remove_bad_word(text[])
{
	static words[][32] = {"bla","cyk"};
	static exceptions[][32] = {"vobla", "krabla", "mobla","picyk","mucyk"};
 
	new i, j, k, pos, epos, len, epos_buf;
	for (i = 0; i < sizeof(words); i++)
	{
		while ( (pos = strfind(text, words[i], true, pos+1)) != -1 )
		{
			len = strlen(words[i]);
 
			for (j = 0; j < sizeof(exceptions); j++)
			{
				epos = strfind(text, exceptions[j], true, epos+1);
				if ( epos != pos - (strlen(exceptions[j]) - len) )
				{
					epos = epos_buf;
					if (j == sizeof(exceptions)-1)
					{
						for (k = pos; k < pos+len; k++)
						{
							text[k] = '*';
						}
					}
					continue;
				}
				else
				{
					break;
				}
			}
			epos_buf = epos;
		}
	}
}
Пример ииспользования:

PHP:
public OnPlayerText(playerid, text[])
{
	remove_bad_word(text);
	return 1;
}
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу