我創建了一個簡單的自定義標籤,它接受一個字符串,用「 - 」和「&」用「和」替換查詢字符串(我不需要%20等)。使用ColdFusion自定義標籤的奇怪結果
不管怎麼說,它工作得很好,但是我的自定義標籤本身之前創造一個空間,像這樣:
qsEncode.cfm:(自定義標籤)
<cfparam name="attributes.string" type="string" default="">
<cfset whitespace = Replace(attributes.string," ","-","all")>
<cfset ampersand = Replace(whitespace,"&","and","all")>
<cfoutput>#ampersand#</cfoutput>
標籤的實現:
<a href="?Page=<cf_qsEncode string="#getCategory.Name#">">#getCategory.Name#</a>
,哪個是標籤前創建一個空間的最終輸出:
somepage.cfm?Page=%20Finance-and-Taxes
我的自定義標籤沒有被傳遞已空格前面加上它(即使它是會被替換爲「 - 」字符)的字符串,所以我不明白爲什麼標籤創建空白。
注意:我知道我可以在我的自定義標籤中包含?Page=
來修復它,但我仍然好奇爲什麼會發生這種情況。
是輸入字符串的「%20」部分嗎?如果是,並且你期望它被replace()替換爲「」,那麼你錯了; 「%20」仍然是字符串「%20」,除非你'urlDecode()'它(或者,如果它實際上是在一個查詢參數,然後它會自動在URL範圍被暴露之前解碼)。 – 2011-02-28 20:35:27
@Adam,不,%20不是輸入字符串的一部分。 – 2011-02-28 21:15:36