我有一个修剪功能,可以正常使用英文文本,但如果相同的功能读取带有重音等的西班牙文本,它会删除所有的重音。有没有更好的方法来削减输出?
例如,如果来自MySQL的文本是“你好,早上好”它输出正常并正确修剪它,但是如果我的文字是'hola ybuenosdías'它会修剪它,但也剥掉'í'在días这个词中。
我正在使用的代码是:
<cfif trim(getProps.property_description) gt "">
#formatTeaser(removeHtml(getProps.property_description),290)#…
[<a href="">#lang_more#</a>]
</cfif>
我还在页面中添加了代码,但它没有任何区别:
<cfprocessingdirective pageencoding="utf-8" />
当我不使用上述修剪方法时,MySQL字段设置为varchar
并在其他页面上正确显示。
答案 0 :(得分:1)
我认为您的问题不在于trim()
,而在于removeHTML()
。
结帐OWASP。它是一个Java库,您可以在CF应用程序中使用它来有选择地从字符串中过滤任何不安全/不必要的内容。
Peter Freitag在他的博客上有一些不错的examples。
答案 1 :(得分:1)
ColdFusion中甚至没有RemoveHTML()
函数。
您可能从某些网站上删除的UDF必须是错误的。这对我有用:
<cfscript>
function RemoveHtml(s) {
return REReplace(s, "<[^>]+>", "", "ALL");
}
function FormatTeaser(s, i) {
// dummy
return s & "…";
}
</cfscript>
<cfset getProps.property_description = "<b>¡Hola y buenos días!<b>">
<cfset lang_more = "expandir">
<cfset clean_description = Trim(RemoveHtml(getProps.property_description))>
<cfif clean_description gt "">#formatTeaser(clean_description, 290)# [<a href="">#lang_more#</a>]</cfif>
输出
¡Hola y buenos días!… [expandir]
答案 2 :(得分:0)
删除HTML的正则表达式只在某些时候起作用,并且可能正在剥离你的unicode。 (您是否只接受a-zA-Z0-9?)要安全删除HTML,请使用Jsoup(http://jsoup.org/)将jsoup jar放入WEB-INF / lib目录并重新启动ColdFusion服务。
然后创建一个Jsoup对象
<cfset local.jsoup = createObject( "java", "org.jsoup.Jsoup" )/>
<cfset local.whitelist = createObject( "java", "org.jsoup.safety.Whitelist" ) />
<cfset local.cleanHTML = local.jsoup.clean( arguments.html, local.whiteList.none()/>
就是这样,local.cleanHTML是你清理过的文本。然后运行你的其他功能。如果仍有问题,请向我们展示您的FormatTeaser方法。
答案 3 :(得分:-2)
我终于使用了左()
的增强版本你可以在这里找到它,它可以毫无问题地修剪数据...... http://cflib.org/udf/FullLeft