2011-06-16 66 views
1

我已被輸入的數據在使用C#子html內容

編輯器視圖中的每個表前用佔位符TinyMCE的存儲的數據:

#data1 
[html table1] 

#data2 
[html table2] 

#data3 
[html table3] 

這被存儲在數據庫中包裹着在數據庫<p>標籤。

我想根據傳遞參數剝離並獲取html表格。

string getTable(string placeholder) 
{ 
    string content = db.getData(); 

    //placeholder = data1, return html table 1 substring data from content variable 
    return [html table1]; //html string 

    //placeholder = data2 
    return [html table2]; //html string 
} 

如何使用C#實現此目的?

回答

1

我認爲this regex might be reliable #data2([^#]+|#(?!data))+</table> (click to see the example),但它取決於你的輸入,它可以打破。 You can't trust regex to parse html.

#data1 
<table id="t1"> 
<tr><td>#</td></tr> 
</table> 

#data2 
<table id="t2"> 
<tr><td>#</td></tr> 
</table> 

#data3 
<table id="t3"> 
<tr><td>#</td></tr> 
</table> 

由其ID您could try <table.*?id=.t1.>([^<]|\<(?!/table))+</table>匹配表。

+0

你的答案給了我另一個想法,我可以使用IDS代替佔位符,讓我編輯你的正則表達式並測試它。 – 2011-06-16 15:22:15

+0

任何想法爲什麼這個正則表達式無法匹配id \ s *上的表格?

。*
2011-06-16 15:27:40

1

在這種情況下,您可以嘗試使用正則表達式。雖然它不會被完全證明(HTML不是常規語言),但如果您沒有嵌套表格,它應該可以正常工作。

string strRegex = @"(?<=#data1)\s*?<table.*?>.*</table>"; 
Regex myRegex = new Regex(strRegex, RegexOptions.Singleline); 
string strTargetString = @"#data1 <table><tr><td> asdsad</td></tr></table>"; 

foreach (Match myMatch in myRegex.Matches(strTargetString)) 
{ 
    if (myMatch.Success) 
    { 
    // myMatch.Value contains table 
    } 
}