首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在base64中搜索和替换MySQL子字符串?

如何在base64中搜索和替换MySQL子字符串?
EN

Stack Overflow用户
提问于 2018-11-25 11:16:04
回答 1查看 524关注 0票数 2

我有一个MySQL数据库,用于一个有很多页面的WordPress站点。我正在使用的流行Avada主题具有将HTML代码块插入内容区域的功能。我用它在整个网站中插入了许多URL。我刚刚迁移了这个站点,发现所有的代码块仍然有我以前的测试环境URL,因为代码块是在数据库中、在fusion_code标记之间编码的。数据库中的内容字段大部分是纯文本,直到我们到达代码块,然后对其进行编码。看起来是这样的:

代码语言:javascript
复制
<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>

我需要一个方法:

  1. 搜索数据库中这些代码块的所有实例。
  2. 对base64标记之间的内容执行fusion_code解码。
  3. 用新的基本url替换旧的测试基url。
  4. Base64只在fusion_code标记之间对结果进行编码,而将其余内容保持不变。

这个是可能的吗?如果是这样,那么要运行的正确MySQL查询是什么?

EN

回答 1

Stack Overflow用户

发布于 2020-07-08 17:49:16

像这样的东西应该能起作用,但我不能让它正常工作。

代码语言:javascript
复制
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 ;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53466901

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档