数据库表包含许多包装在</noindex>
标记中的恶意脚本实例。需要使用正则表达式查找代码并将其替换为空字符串的命令或脚本。
我有一个执行regex_replace查找和替换循环的MySQL函数。功能代码如下。我使用函数下面的UPDATE命令引用该函数。我需要找到<noindex></noindex>
代码的所有实例,并将其以及其中的所有内容替换为空字符串。
CREATE FUNCTION `regex_replace`(pattern VARCHAR(1000),replacement VARCHAR(1000),original VARCHAR(1000))
RETURNS VARCHAR(1000)
DETERMINISTIC
BEGIN
DECLARE temp VARCHAR(1000);
DECLARE ch VARCHAR(1);
DECLARE i INT;
SET i = 1;
SET temp = '';
IF original REGEXP pattern THEN
loop_label: LOOP
IF i>CHAR_LENGTH(original) THEN
LEAVE loop_label;
END IF;
SET ch = SUBSTRING(original,i,1);
IF NOT ch REGEXP pattern THEN
SET temp = CONCAT(temp,ch);
ELSE
SET temp = CONCAT(temp,replacement);
END IF;
SET i=i+1;
END LOOP;
ELSE
SET temp = original;
END IF;
RETURN temp;
END$$
DELIMITER ;
UPDATE wp_posts SET post_content = regex_replace('<noindex>.*</noindex>', '', post_content);
经过测试的UPDATE命令不返回任何结果。代码问题可能与如何正确编写在regex_replace中搜索的字符串有关。