我有一个MySQL数据库,用于一个有很多页面的WordPress站点。我正在使用的流行Avada主题具有将HTML代码块插入内容区域的功能。我用它在整个网站中插入了许多URL。我刚刚迁移了这个站点,发现所有的代码块仍然有我以前的测试环境URL,因为代码块是在数据库中、在fusion_code标记之间编码的。数据库中的内容字段大部分是纯文本,直到我们到达代码块,然后对其进行编码。看起来是这样的:
<here is lots of unencoded content and html tags>**[fusion_code]PGEgaHJlZj0iaHR0cDovL2xvY2FsaG9zdC9lc3RlZW0vY29zbWV0aWMtc3VyZ2VyeS9ib2R5L2FiZG9taW5vcGxhc3R5LXR1bW15LXR1Y2svIj4=[/fusion_code]**<here is more unencoded content and html tags>**[fusion_code]PGEgaHJlZj0iaHR0cDovL2xvY2FsaG9zdC9lc3RlZW0vY29zbWV0aWMtc3VyZ2VyeS9ib2R5L2FiZG9taW5vcGxhc3R5LXR1bW15LXR1Y2svIj4=[/fusion_code]**<here is more unencoded content and html tags etc>我需要一个方法:
这个是可能的吗?如果是这样,那么要运行的正确MySQL查询是什么?
发布于 2020-07-08 17:49:16
像这样的东西应该能起作用,但我不能让它正常工作。
DELIMITER $$
CREATE FUNCTION fusion_decode(post_content LONGTEXT)
RETURNS LONGTEXT
DETERMINISTIC
BEGIN
DECLARE code LONGTEXT;
WHILE post_content LIKE '%[fusion_code]%' DO
SET code = SUBSTRING_INDEX(SUBSTRING_INDEX(post_content, '[/fusion_code]', 1), '[fusion_code]', -1);
SET post_content = REPLACE(post_content, CONCAT('[fusion_code]', code, '[/fusion_code]'), FROM_BASE64(code));
END WHILE;
RETURN post_content;
END $$
DELIMITER ;https://stackoverflow.com/questions/53466901
复制相似问题