尝试修复不区分大小写的关键字搜索结果。这是破碎的代码:
replaceNoCase(text, keyword, '<font style="background-color:yellow;">#keyword#</font>', 'all')
问题当然是文本中关键字的情况会改变为用户输入的内容。
以下是PHP case insensitive highlighting in php中的解决方案,但在使用ColdFusion的REReplaceNoCase函数时,我不知道如何访问搜索文本中的匹配值。有关如何解决这个问题的任何想法?
答案 0 :(得分:5)
更像这样:
highlightedText = reReplaceNoCase(text, "(#keyword#)", '<span class="highlight">\1</span>', "ALL");
我在博客上完全彻底地了解了CFML的正则表达式系统:"Regular expressions in CFML" link summary
答案 1 :(得分:1)
就像你说的那样,reReplace将简单地用你输入的任何文本(case和all)替换你的文本。这就是我要做的事情:
这是一个快速而肮脏的要点。试一试,看看它是否适合你: https://gist.github.com/kriskorsmo/6d02e06bc4a8483b3341
以下是我博客上的现场演示: kriskorsmo.com/examples/highlighting.cfm
我创建了一个简单的&#34;突出显示&#34;也适合你。它需要两个参数 - keyword和originalText - 并返回原始文本,并突出显示关键字。
****** EVEN BETTER ****** 在CFLib.org上有一个UDF - http://www.cflib.org/udf/Highlight
答案 2 :(得分:0)
<强>的ColdFusion 强>
replaceNoCase(text, keyword, '<span style="highlight">#keyword#</span>', 'all')
<强> CSS 强>
.highlight {
background-color:yellow;
text-transform: capitalize;
}
大写将成为第一个字母大写。
你可能想要
replaceNoCase(text, keyword, '<span style="highlight">#lcase(keyword)#</span>', 'all')
答案 3 :(得分:0)
编辑:不起作用。
<cfset keyword = "batman">
<cfset text = "SOMETHING BATMAN SOMETHING.">
<cfoutput>
#(FindNoCase(keyword, text))? ReplaceNoCase(text, keyword, '<font style="background-color:yellow;">' & Mid(text, FindNoCase(keyword, text), Len(keyword)) & '</font>', 'all') : text#
</cfoutput>