gpt4 book ai didi

coldfusion - 从使用 CFML 存储为字符串的 url 解析特定变量

转载 作者:行者123 更新时间:2023-12-04 00:06:47 27 4
gpt4 key购买 nike

我想从存储为字符串的 url 中解析特定的 url 变量键值。看起来你可以在ACF下使用底层java库coldfusion.util.HTMLTools,但我需要它在Rairo下也能工作。还有另一种方法,还是使用正则表达式是最好的答案?

我试图在格式如下例的 url 中检索没有 anchor 的 url 变量键的值。
http://example.com?key=134324625625435#gid=0

最佳答案

我在 Scott 的回答上发表评论,但时间太长了,所以......

约翰写道:

Running the following example I end up with the value of 0, but I think it should be the entire key value?


<cfoutput>
<cfset theUrl = "https://docs.google.com/spreadsheet/ccc?key=0AthiZNZ73LBndUzRTUkplbmNhYWc##gid=0" />
<cfset theUrl = listRest(theUrl, "?")>
<cfloop list="#theUrl#" index="URLPiece" delimiters="&">
Key: #listFirst(urlPiece, "=")# Value: #listLast(urlPiece, "=")# <br />
</cfloop>
</cfoutput>

该示例 URL 失败的原因是它包含一个页面段(散列之后的位),需要在解析查询字符串之前将其剥离。

通过将键/值部分包装在 UrlDecode 中来获取正确的变量/值也很重要。 .

另外,在值中使用等号是完全可以接受的,所以 ?key==应该返回 =作为值,这意味着更改 ListLastListRest和设置 includeEmptyFields为真。

此外,如果您有一个查询字符串,例如 ?a&b那么约定是将值设置为 true或空字符串 - 当前代码设置为键名,这是错误的。

总之,这是一个函数:
<cffunction name="getParamsFromUrlString" returntype="Struct" output=false >
<cfargument name="UrlString" type="String" required />
<cfargument name="Separator" type="String" default="?" />
<cfargument name="Delimiter" type="String" default="&" />
<cfargument name="AssignOp" type="String" default="=" />
<cfargument name="EmptyVars" type="String" default="" />

<cfset var QueryString = ListRest( ListFirst( Arguments.UrlString , '##' ) , Arguments.Separator ) />
<cfset var Result = {} />

<cfloop index="local.QueryPiece" list=#QueryString# delimiters="#Arguments.Delimiter#">

<cfif NOT find(Arguments.AssignOp,QueryPiece)>
<cfset Result[ UrlDecode( QueryPiece ) ] = Arguments.EmptyVars />
<cfelse>
<cfset Result[ UrlDecode( ListFirst(QueryPiece,Arguments.AssignOp) ) ]
= UrlDecode( ListRest(QueryPiece,Arguments.AssignOp,true) ) />
</cfif>
</cfloop>

<cfreturn Result />
</cffunction>

它可以简单地使用:
    <cfset theUrl = "https://docs.google.com/spreadsheet/ccc?key=0AthiZNZ73LBndUzRTUkplbmNhYWc##gid=0" />
<cfset Data = getParamsFromUrlString( theUrl ) />
<cfdump var=#Data# />

或者它可以用于复杂的非标准 URL 字符串,如下所示:
    <cfset theUrl = "https://somewhere/index.jsp;x:145;y:54;z:1;f;d:%23%23;w:%3B" />
<cfset Data = getParamsFromUrlString( theUrl , ';' , ';' , ':' , 'true' ) />
<cfdump var=#Data# />

以及(希望)介于两者之间的一切。

关于coldfusion - 从使用 CFML 存储为字符串的 url 解析特定变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10220795/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com