Well anything can be read from a file meaning everything can be made into a dynamic list.
I gave you some options to pick from.
Code:
#include <amxmodx>
public plugin_init() {
register_plugin("Test Plugin 1", "", "[ --{-@ ]");
new Array:hWhitelist = ArrayCreate(32);
ArrayPushString(hWhitelist, "doshite");
new Array:hBlacklist = ArrayCreate(32);
ArrayPushString(hBlacklist, "dipshit");
ArrayPushString(hBlacklist, "shite");
ArrayPushString(hBlacklist, "shit");
new Array:hMemory = ArrayCreate();
new string[] = "shit doshite dipshit shite";
server_print("PRE: %s", string);
new placeholder[3] = { 5, 0, 0 };
new tempstring[32];
new size = ArraySize(hWhitelist);
for ( new i ; i < size ; i++ ) {
ArrayGetString(hWhitelist, i, tempstring, charsmax(tempstring));
placeholder[1] = i;
if ( replace_all(string, charsmax(string), tempstring, placeholder) )
ArrayPushCell(hMemory, i);
}
size = ArraySize(hBlacklist);
for ( new i ; i < size ; i++ ) {
ArrayGetString(hBlacklist, i, tempstring, charsmax(tempstring));
replace_all(string, charsmax(string), tempstring, "***");
}
size = ArraySize(hMemory);
for ( new i ; i < size ; i++ ) {
placeholder[1] = ArrayGetCell(hMemory, i);
ArrayGetString(hWhitelist, placeholder[1], tempstring, charsmax(tempstring));
replace_all(string, charsmax(string), placeholder, tempstring);
}
ArrayClear(hMemory);
server_print("POST: %s", string);
}