在查看文本时替换TinyMCE引入的术语

时间:2013-06-27 09:42:28

标签: python django replace tinymce

我正在Django设计一本数字图书。我有一个术语表,作者使用TinyMCE编写本书的页面,当读者查看本页时,我希望本文中的术语表看起来像是词汇表定义的链接。

我在数据库中存储的文本是HTML文本,我只需要在纯文本中搜索,当访问此页面时,将'term'替换为'term'。

有什么想法吗?

对我的英语表示抱歉和抱歉。

1 个答案:

答案 0 :(得分:1)

直接处理HTML代码永远不是一个好主意,如果你只是对html文本进行替换,你可能会遇到这样的问题:

<img src="static.example.com/jinja-templating"/>

成为:

<img src="static.example.com/<a href='/glossary?word=jinja'>jinja</a>-templating"/>

绝对具有破坏性。没有话语。

那我该怎么办?

HTML Parser

我强烈建议您学习和使用像BeautifulSoup

这样的HTML解析器

正则表达式

直接处理html时,正则表达式也不被认为是安全的,但是在 它可以完成工作。对于你的情况,我决定提出一个常规的 可能完成它的表达式。

import re

html = '<div id="term"><span style="term:10px">term</span><img src="static.example.com/term"/></div><div>the technology term is amazing</div>'
glossaried = re.sub(r'>([^<>]*)term([^<>]*)<',r'>\1<a href="/glossary?word=term">term</a>\2<', html)
print glossaried


'<div id="term"><span style="term:10px"><a href="/glossary?word=term">term</a></span><img src="static.example.com/term"/></div><div>the technology <a href="/glossary?word=term">term</a> is amazing</div>'