我四处寻找并找到一些有价值的信息。关于FindNoCase但我还没有找到这个具体问题的答案。
我正在使用FindNoCase在url中找到“/ us /”然后处理一些代码。这适用于一个国家/地区的网站。
<cfif FindNoCase("/us/",#cgi.SCRIPT_NAME#)>
Process some code here.
</cfif>
我的问题是:有没有办法找到多个国家/地区网站的网址“/ xx /”,并在cfif标记之间处理相同的代码?例如“/ us /”,“/ ca /”,“/ mx /”等
希望这是有道理的。
答案 0 :(得分:3)
如果在字符串中搜索多个不同的代码,我会使用REFindNoCase
。制作一个像(/us/)|(/ca/)
那样寻找/us/
或/ca/
的正则表达式,根据文档(http://help.adobe.com/en_US/ColdFusion/9.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec22c24-7e99.html),您可以返回子表达式并引用它们。
不需要循环。
REFindNoCase("(/us/)|(/ca/)", URL, 1, true)
引用你要做的字符串:
<cfset URL = 'domaim.com/page/us/' />
<cfset match = REFindNoCase("(/us/)|(/ca/)", URL, 1, true) />
<cfif arrayLen(match) GT 0>
<cfset value = Mid(URL,match.pos[1],match.len[1]) />
<cfswitch expression="#value#">
<cfcase value="/us/">
<!--- Do something for US match --->
</cfcase>
<cfcase value="/ca/">
<!--- Do something for CA match --->
</cfcase>
<!--- ETC --->
</cfswitch>
<cfelse>
<!--- Do something if no match found --->
</cfif>
在这种情况下,值等于/us/
。或者无论如何应该。我在这里写了所有这些,而不是在我的服务器上进行实际测试。如果要覆盖字符串中的多个匹配项,则必须调整此项。
答案 1 :(得分:0)
如果我正确理解您的问题,您希望处理多个国家/地区的相同代码(如果在网址中检测到)。您可以创建一个您想要以某种方式处理的国家/地区代码数据库(CountryTableXYZ),查询它,然后遍历该查询,以便它搜索您在表格中的每个条目的URL。
<cfloop query="CountryQuery">
<cfif FindNoCase("#countryCode#",#cgi.SCRIPT_NAME#)>
Process some code here.
</cfif>
</cfloop>
至少我是如何理解它的。如果我不正确,请告知我们或澄清您的初始帖子。