首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Coldfusion-9修剪值

Coldfusion-9修剪值
EN

Stack Overflow用户
提问于 2012-04-18 03:31:52
回答 3查看 611关注 0票数 3

我正在试着写一段代码,这个代码包含3个部分的URL (www).(domainname).(com),并完全修剪掉第一部分。

到目前为止,我有这段代码来检查左侧是否没有'www‘或'dev’,进入并设置siteDomainName = removecharsCGI.SERVER_NAME,1,2);

代码语言:javascript
复制
if (numHostParts eq 3 and listfindnocase('www,dev',left(CGI.SERVER_NAME,3)) eq 0) {
        siteDomainName = removecharsCGI.SERVER_NAME,1,2);

上面代码的问题是,只删除2个字符,我需要它删除所有字符,直到numHostParts eq 2或至少到第一个“。

另一个例子是:

akjnakdn.example.com我需要的代码删除网址的第一部分与点包括(akjnakdn。)

这段代码将帮助我在网站上的一些查询停止粉碎,因为它们与#URL#相关,当#URL#是假的时,我会收到导致我的联系人表单停止工作的cform query returned zero records错误。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-04-18 03:49:04

你可以这样做:

代码语言:javascript
复制
<cfscript> 
    local.nameArr = ListToArray(CGI.SERVER_NAME, '.');
    if (ArrayLen(local.nameArr) gt 2) {
        ArrayDeleteAt(local.nameArr, 1);
    }
    siteDomainName = ArrayToList(local.nameArr, '.');
</cfscript>

我将服务器名拆分为数组元素,并以句点作为分隔符。如果元素的数量大于两个,则删除第一个元素。然后将其转换回以句点为分隔符的列表。

更新

正如Robb所建议的,通过跳过数组转换过程,这可能会更简洁,性能也会更好:

代码语言:javascript
复制
<cfscript> 
    siteDomainName = CGI.SERVER_NAME;
    if (ListLen(siteDomainName, '.') gt 2) {
        siteDomainName = ListDeleteAt(siteDomainName, 1, '.');
    }
</cfscript>
票数 4
EN

Stack Overflow用户

发布于 2012-04-18 04:10:10

您可以只使用listRest。它返回列表中除第一个元素以外的所有元素。文档在这里http://help.adobe.com/en_US/ColdFusion/9.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec22c24-6d87.html

示例:

代码语言:javascript
复制
<cfscript>
name = cgi.server_name;
if (listlen(name,".") gte 3) {
  name = listRest(name,".");
}
</cfscript>
票数 6
EN

Stack Overflow用户

发布于 2012-04-18 04:19:53

我将使用正则表达式,因为您只想“修剪”某些子域(wwwdev)。

代码语言:javascript
复制
<cfset the_domain = REReplaceNoCase(cgi.SERVER_NAME, "(www|dev)\.", "") />

只需在括号内使用要修剪的子域的|-delimited列表即可。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10197870

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档