是否可以编写执行以下操作的ColdFusion代码?
在第2步中,我尝试在href中找到.cfm文件名。
由于
答案 0 :(得分:3)
我的测试目录是使用reader.cfm和list.cfm设置的。它能够在示例列表文件中找到list.cfm文件,并将reader.cfm文件记录为不存在。
Theres可能是从文件中获取cfm文件名列表的更好方法。我不是正则表达式的大师,但我测试它是否按预期工作。如果你的链接有像_或 - 这样的特殊字符,它可能无法工作。这应该会给你一些开始。
<cffile action="read"
file="#expandpath('list.cfm')#"
variable="fileList">
<cfset fileResult = rematchNoCase('([a-z]|[A-Z]|[0-9])+\.cfm', fileList)>
<cfdirectory
directory="#expandPath('.')#"
action="list"
filter="*.cfm"
listInfo="name"
recurse = "no"
type="file"
name="dirList">
<cfset notInFile = ArrayNew(1)>
<cfoutput>
<cfloop query="dirList">
<cfloop from="1" to="#arrayLen(fileResult)#" index="i">
<cfif dirList.name eq fileResult[i]>
found one! #dirList.name#<br>
<cfbreak>
</cfif>
<cfif i eq #arrayLen(fileResult)#>
Item not found! #dirList.name#<br>
<cfset _r = ArrayAppend(notInFile, dirList.name)>
</cfif>
</cfloop>
</cfloop>
</cfoutput>
<cfdump var="#notInFile#">
<cffile action="read"
file="#expandpath('list.cfm')#"
variable="fileList">
<cfset fileResult = rematchNoCase('([a-z]|[A-Z]|[0-9])+\.cfm', fileList)>
<cfdirectory
directory="#expandPath('.')#"
action="list"
filter="*.cfm"
listInfo="name"
recurse = "no"
type="file"
name="dirList">
<cfset notInFile = ArrayNew(1)>
<cfoutput>
<cfloop query="dirList">
<cfloop from="1" to="#arrayLen(fileResult)#" index="i">
<cfif dirList.name eq fileResult[i]>
found one! #dirList.name#<br>
<cfbreak>
</cfif>
<cfif i eq #arrayLen(fileResult)#>
Item not found! #dirList.name#<br>
<cfset _r = ArrayAppend(notInFile, dirList.name)>
</cfif>
</cfloop>
</cfloop>
</cfoutput>
<cfdump var="#notInFile#">
我使用的list.cfm文件的内容。
<a href="someRealLink.cfm">click me to fun</a>
something
other thing
a coldfusion.cfm thing
stuff
things
yar.cfm
blah
Something.cfm
0912.cfm
some123.cfm
cfm
list.cfm
第一个循环遍历我们的目录内容。第二个循环遍历我们正在查看的cfm文件中的数字数组条目。第一个if块查看当前数组位置内容并将其与外部循环名称值进行比较。第二个if可以查看当前数组位置值和最大数组位置值。我们知道如果我们到达当前的locaction == max位置 - 在内部循环(文件数组)中找不到外部循环元素(目录列表)。这是对第一个if块中的<a href="someRealLink.cfm">click me to fun</a>
something
other thing
a coldfusion.cfm thing
stuff
things
yar.cfm
blah
Something.cfm
0912.cfm
some123.cfm
cfm
list.cfm
所做的。当我们找到有效匹配时,此将突破第二个内循环。这可以防止第二个if块在vaild find上执行。
希望这会有所帮助。如果您觉得答案是XD,请不要忘记接受答案