我有一个可能包含 HTML 代码作为用户输入的字段。如果我使用简单的荧光笔,它不会在添加<em>
标签之前转义输入。例如,如果输入是
"This is a <caption>"
我搜索“标题”,我得到:
"This is a <<em>caption</em>>"
但我想得到:
"This is a <<em>caption</em>>"
当呈现为 HTML 时,它看起来与突出显示匹配单词的输入相同。
我有一个可能包含 HTML 代码作为用户输入的字段。如果我使用简单的荧光笔,它不会在添加<em>
标签之前转义输入。例如,如果输入是
"This is a <caption>"
我搜索“标题”,我得到:
"This is a <<em>caption</em>>"
但我想得到:
"This is a <<em>caption</em>>"
当呈现为 HTML 时,它看起来与突出显示匹配单词的输入相同。
One technique is to use some other sentinel string to indicate highlighting. See hl.simple.pre
and hl.simple.post
. That way you can perform escaping first, without losing your highlighting, and then replace the sentinels with highlighting markup as a final step.
For example, the Sunspot Solr client for Ruby uses @@@hl@@@
for the hl.simple.pre
param, and @@@endhl@@@
for the hl.simple.post
param. Using these values…</p>
This is a <@@@hl@@@caption@@@endhl@@@>
This is a <@@@hl@@@caption@@@endhl@@@>
This is a <<em>caption</em>>
Solr 4.3.1 具有启用特定编码器的选项,用于高亮显示生成 XML/HTML 转义片段。放
<str name="hl.encoder">html</str>
在 solrconfig.xml 中的 /config/requestHandler[@name="/select"]/lst[@name="defaults"] 下方。也可以通过&hl.encoder=html在url中设置参数。标准 solrconfig.xml 包含此编码器的定义
<!-- Configure the standard encoder -->
<encoder name="html" class="solr.highlight.HtmlEncoder" />
示例:“X < Y < Z”将突出显示为
X < <em>Y</em> < Z
搜索“Y”时。Solr XML 响应包含
X &lt; <em>Y</em> &lt; Z
当然,在 str 元素中。
您可以使用 String.replace 替换"<<"
with"<<"
和">>"
with ">>"
。如果您想要任何更具体的替换,您也可以指定它们