我正在Django设计一本数字图书。我有一个术语表,作者使用TinyMCE编写本书的页面,当读者查看本页时,我希望本文中的术语表看起来像是词汇表定义的链接。
我在数据库中存储的文本是HTML文本,我只需要在纯文本中搜索,当访问此页面时,将'term'替换为'term'。
有什么想法吗?
对我的英语表示抱歉和抱歉。
答案 0 :(得分:1)
直接处理HTML代码永远不是一个好主意,如果你只是对html文本进行替换,你可能会遇到这样的问题:
<img src="static.example.com/jinja-templating"/>
成为:
<img src="static.example.com/<a href='/glossary?word=jinja'>jinja</a>-templating"/>
绝对具有破坏性。没有话语。
我强烈建议您学习和使用像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>'