我已将来自4个不同论坛数据库的4个聊天与触发器相关联,现在我想命令触发匿名通知我输入“/ msg message here”
以下是表格列
中的示例消息(AGN)[color=#EEFD01]this is a message example[/color]
(ND)[color=#1EB101]this is a message example[/color]
开头圆括号中的字母代表消息来自哪个论坛。
到目前为止,这是我的触发器:CREATE TRIGGER agn_sign_chat BEFORE INSERT ON dark_taigachat FOR EACH ROW BEGIN
IF (INSTR(NEW.message,"/msg") > 0) THEN
SET NEW.message = CONCAT("(!) ", NEW.message);
SET NEW.message = REPLACE(NEW.message,"/msg ","");
SET NEW.username = "ANNOUNCEMENT";
SET NEW.user_id = 996;
//HERE I WANT TO REPLACE COLOR TAG IN MESSAGE TO #fd0101 (RED)
ELSEIF (INSTR(NEW.message,"(") != 1) THEN
SET NEW.message = CONCAT("(AGN) ", NEW.message);
END IF ;
END ;
ElSEIF正在处理论坛标志,它在IF下我将消息详细信息更改为一般公告消息。
它可以工作,但保持字体的颜色为我的人物字体颜色,所以我想用红色交换它,如#fd0101。如果我使用这个/ msg命令新增了人的字体颜色,我可以使用RePLACE()将其颜色与红色交换,但颜色值会有所不同,所以我猜我需要使用REGEX,我已经使用了几次选择mysql数据库中的东西但从未在触发器中使用过。是否有可能做到这一点?也许像这样会选择颜色#([0-9] | [A-F])但是如何找到并替换它?
谢谢你的时间答案 0 :(得分:0)
答案 1 :(得分:0)
抱歉,MySQL中没有正则表达式替换功能。
您需要以某种客户端语言(PHP,Java等)来实现。
答案 2 :(得分:0)
SET NEW.message = REGEXP_REPLACE(NEW.message, '\\#([a-fA-F]|[0-9]){3,6}', '\\#fd0101')
理论上,它应该可以工作。 至少 PhpMyAdmin 需要双重转义 "\\"。