使用FindNoCase查找网址字符串

时间:2015-07-16 20:07:27

标签: coldfusion

我四处寻找并找到一些有价值的信息。关于FindNoCase但我还没有找到这个具体问题的答案。

我正在使用FindNoCase在url中找到“/ us /”然后处理一些代码。这适用于一个国家/地区的网站。

<cfif FindNoCase("/us/",#cgi.SCRIPT_NAME#)>
Process some code here.
</cfif>

我的问题是:有没有办法找到多个国家/地区网站的网址“/ xx /”,并在cfif标记之间处理相同的代码?例如“/ us /”,“/ ca /​​”,“/ mx /”等

希望这是有道理的。

2 个答案:

答案 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>

至少我是如何理解它的。如果我不正确,请告知我们或澄清您的初始帖子。