当前位置: 首页 > 面试题库 >

PostgreSQL-替换HTML实体

养学
2023-03-14
问题内容

我刚刚完成了从数据库中剥离HTML实体的任务,因为我们进行了很多爬网,并且某些爬网程序在输入时没有这样做:(

因此,我开始编写一堆看起来像这样的查询;

UPDATE nodes SET name=regexp_replace(name, 'à', 'à', 'g') WHERE name LIKE '%#xe0%';
UPDATE nodes SET name=regexp_replace(name, 'á', 'á', 'g') WHERE name LIKE '%#xe1%';
UPDATE nodes SET name=regexp_replace(name, 'â', 'â', 'g') WHERE name LIKE '%#xe2%';

显然,这是一种非常幼稚的方法。我一直在尝试找出解码功能是否可以做些聪明的事情。也许通过正则表达式抓住HTML实体一样/&#x(..);/,然后通过
刚刚%1部分到ASCII解码器,以及重建串…或东西…

我可以按查询继续吗?其中可能只有40个左右。


问题答案:

使用pl /
perlu编写函数并使用此模块https://metacpan.org/pod/HTML::Entities

当然,您需要安装perl并提供pl / perl。

1) 首先创建程序语言pl / perlu:

CREATE EXTENSION plperlu;

2) 然后创建一个像这样的函数:

CREATE FUNCTION decode_html_entities(text) RETURNS TEXT AS $$
    use HTML::Entities;
    return decode_entities($_[0]);
$$ LANGUAGE plperlu;

3) 然后可以像这样使用它:

select decode_html_entities('aaabbb&.... asasdasdasd …');
   decode_html_entities    
---------------------------
 aaabbb&.... asasdasdasd 鈥�
(1 row)


 类似资料:
  • 问题 你需要使用命名实体来替代 HTML 标签: <br/> => &lt;br/&gt; 解决方案 htmlEncode = (str) -> str.replace /[&<>"']/g, ($0) -> "&" + {"&":"amp", "<":"lt", ">":"gt", '"':"quot", "'":"#39"}[$0] + ";" htmlEncode('<a hr

  • 问题内容: 我正在加载一个包含换行符的文本文件,并将其传递给。 用替换为已加载的字符串中的with ,它们会被模板转义为html 并显示在浏览器中,而不是引起换行。 如何更改此行为而无需切换到(没有XSS保护)? 问题答案: 看来您可以先在文本上运行template.HTMLEscape()进行净化,然后执行\ n 替换所信任的内容,然后将其用作预先转义和信任的模板数据。 更新:在Kocka的示例

  • 问题内容: 我曾经能够用来输出未经消毒的代码(因为消毒发生在服务器端)。 但是现在这个选择消失了吗?我知道我可以使用,但是当不安全易于使用时,将其添加到整个JavaScript上将是一个巨大的痛苦。 我怎么不安全回来? 问题答案: 好吧,仅创建您自己的指令非常简单,这是一个示例。 指令 : 用法 : 演示: http ://jsfiddle.net/cC5VZ/2

  • 有没有办法做到这一点?

  • 本文向大家介绍MySQL批量替换HTML标签,包括了MySQL批量替换HTML标签的使用技巧和注意事项,需要的朋友参考一下 1 前因 前段时间维护的一个WordPress小网站被黑,分析源码发现内容中多出了一段JavaScript代码: 访问页面的时候,会跳转到黑客的广告页面: 经过追踪,最后发现是在MySQL中被注入了以上代码,所以需要在wp_posts表中把这些内容都替换掉 (当然后来加强了这

  • 这是我的密码 我想替换字体标签,并把span标签。在这将取代第一个字体标签但不是第二个标签