插件窝 干货文章 MySQL数据库中特殊字符被转义成HTML实体,如何恢复原始文本?

MySQL数据库中特殊字符被转义成HTML实体,如何恢复原始文本?

REPLACE 使用 函数 output 56    来源:    2025-03-16

在MySQL数据库中,如果特殊字符被转义成HTML实体(例如 & 被转义为 &),你可以通过以下几种方法来恢复原始文本:

方法1:使用MySQL内置函数

MySQL提供了 REPLACE 函数来替换字符串中的特定字符。你可以使用 REPLACE 函数来将HTML实体转换回原始字符。

例如,将 & 转换回 &

SELECT REPLACE(column_name, '&', '&') AS original_text
FROM your_table;

如果你有多个HTML实体需要转换,可以嵌套多个 REPLACE 函数:

SELECT 
    REPLACE(
        REPLACE(
            REPLACE(column_name, '&', '&'),
            '&lt;', '<'),
        '&gt;', '>') AS original_text
FROM your_table;

方法2:使用PHP或其他编程语言处理

如果你在应用程序中处理数据,可以使用编程语言的内置函数来解码HTML实体。例如,在PHP中可以使用 html_entity_decode 函数:

$original_text = html_entity_decode($escaped_text);

方法3:使用MySQL存储过程

如果你需要频繁地进行这种转换,可以创建一个MySQL存储过程来自动处理:

DELIMITER //

CREATE FUNCTION decode_html_entities(input TEXT) RETURNS TEXT
BEGIN
    DECLARE output TEXT;
    SET output = REPLACE(input, '&amp;', '&');
    SET output = REPLACE(output, '&lt;', '<');
    SET output = REPLACE(output, '&gt;', '>');
    SET output = REPLACE(output, '&quot;', '"');
    SET output = REPLACE(output, '&#039;', "'");
    RETURN output;
END //

DELIMITER ;

然后你可以这样使用:

SELECT decode_html_entities(column_name) AS original_text
FROM your_table;

方法4:使用正则表达式

如果你需要处理更复杂的HTML实体,可以使用正则表达式来匹配和替换。MySQL 8.0及以上版本支持正则表达式替换函数 REGEXP_REPLACE

SELECT 
    REGEXP_REPLACE(
        REGEXP_REPLACE(
            REGEXP_REPLACE(column_name, '&amp;', '&'),
            '&lt;', '<'),
        '&gt;', '>') AS original_text
FROM your_table;

方法5:使用第三方工具或库

如果你处理的数据量较大或需要更复杂的处理,可以考虑使用第三方工具或库,如Python的 BeautifulSouphtml.parser 模块来解析和恢复HTML实体。

总结

根据你的具体需求和环境,可以选择适合的方法来恢复原始文本。如果是在数据库层面处理,使用MySQL内置函数或存储过程是最直接的方式;如果是在应用程序中处理,使用编程语言的内置函数会更加灵活。