如何在使用 Jinja2 striptags 过滤器时保留换行符 '\n'?
how to preserve newline '\n' while using Jinja2 striptags filter?
用户post的纯文本表格,我想去除post内容中的所有HTML标签,但保留换行符\n
来划分段落。
你不能,不能使用 striptags
过滤器,因为它无条件地用单个 space.
替换所有白色 space 序列
解决方法是先用唯一的占位符替换换行符,然后剥离标签,然后用换行符替换占位符。这有点冒险,因为输入文本可能包含占位符:
text | replace('\n', '-*- newline -*-') | striptags | replace('-*- newline -*-', '\n')
striptags
实现是一个简单的正则表达式替换:
import re
_striptags_re = re.compile(r'(<!--.*?-->|<[^>]*>)')
replaced = _striptags_re.sub('', input_text)
(省略了白色space处理步骤)
您可以在 Python 代码中执行此操作,然后再将值传递给模板,或在自定义过滤器中复制此操作。
用户post的纯文本表格,我想去除post内容中的所有HTML标签,但保留换行符\n
来划分段落。
你不能,不能使用 striptags
过滤器,因为它无条件地用单个 space.
解决方法是先用唯一的占位符替换换行符,然后剥离标签,然后用换行符替换占位符。这有点冒险,因为输入文本可能包含占位符:
text | replace('\n', '-*- newline -*-') | striptags | replace('-*- newline -*-', '\n')
striptags
实现是一个简单的正则表达式替换:
import re
_striptags_re = re.compile(r'(<!--.*?-->|<[^>]*>)')
replaced = _striptags_re.sub('', input_text)
(省略了白色space处理步骤)
您可以在 Python 代码中执行此操作,然后再将值传递给模板,或在自定义过滤器中复制此操作。