2012-07-20 101 views
-2

我需要使用ColdFusion動態創建一個新的佈局,方法是先縮小頁面的頂部和底部,然後另存爲2個不同的變量。使用ColdFusion進行頁面抓取

頂部停止在頂部,直到這。

googleoff: all (This is in an HTML Comment) 

底部開始於這個

googleon: all (This is in an HTML comment) 

,直到結束。

我在想,我可以使用正則表達式來做到這一點。

+0

不,只是使用字符串函數,這會更容易。 – Bergi 2012-07-20 01:04:42

+0

可以請稍微擴展一下嗎? – user1235905 2012-07-20 01:41:10

+0

正則表達式會是開銷。只需使用由該語言提供給您的字符串操作工具來搜索確切的字符串並切分子字符串。 – Bergi 2012-07-20 10:04:36

回答

0

假設這些意見僅發生在你所說的,你可以很容易地使用正則表達式的字符串分割做到這一點的位置:

<cfset Sections = String.split('<!-- google(?:on|off): all -->') /> 

<cfset TopOfPage = Sections[1] /> 
<cfset BottomOfPage = Sections[3] /> 

將需要更新的正則表達式,如果他們的意見是不固定的 - 例如如果空白不可預測,則可以用\s*替換空格。


爲了便於比較,這裏有一個非正則表達式版本:

<cfset EndOfTopPos  = find('<!-- googleoff: all -->' , String) - 1 /> 
<cfset StartOfBottomPos = find('<!-- googleon: all -->' , String , EndOfTopPos) + 22 /> 

<cfset TopOfPage = left(String , EndOfTopPos) /> 
<cfset BottomOfPage = right(String , len(String)-StartOfBottomPos) /> 

因爲這可與固定的字符串,它是更快 - 但你將需要重複此數千倍之前這種差異可能是顯著。