0

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

我存储在数据库中的文本是 HTML 文本,我只需在纯文本中搜索并在访问此页面时将“术语”替换为“术语”。

有任何想法吗?

问候和对不起我的英语。

4

1 回答 1

1

直接处理 HTML 代码从来都不是一个好主意,如果您只是对 html 文本进行替换,您可能会遇到如下问题:

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

变得:

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

这绝对是破坏性的。没有言语。

那么我能做什么呢?

HTML 解析器

我强烈推荐学习和使用像BeautifulSoup这样的 HTML 解析器

正则表达式

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

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>'
于 2013-06-27T12:34:55.940 回答