我有一個網站,使用戶可以發佈消息到論壇。自動超鏈接URL和電子郵件的使用C#,同時留下定製標籤
目前,如果用戶輸入網址或電子郵件地址並將其發送,則其與任何其他文本片段的處理方式相同。
有些工具可以讓用戶提供超鏈接的網頁和電子郵件地址(通過一些定製的標籤/標記) - 有時會使用這些工具,但並非總是如此。此外,定製的「圖片」標籤也可用於引用網絡上託管的圖片。
我的目標是兼顧那些使用這些現有工具生成超鏈接地址的人,同時也爲那些只需輸入網址或電子郵件地址的人提供服務,然後自動將其轉換爲超級鏈接地址, (儘快提交他們的帖子)。
我找到了一個或兩個正則表達式來轉換一個純字符串的Web或電子郵件地址,但是,我顯然不想對已經通過網站定製標記處理的地址執行任何操作,這就是我被卡住的地方 - 如何排除任何通過定製標籤已經滿足的網站或電子郵件地址 - 我不想讓它們保持原樣。
這裏有我需要獨處的變化定製標記的一些例子:
[URL=www.msn.com]www.msn.com[/URL]
[URL=http://www.msn.com]http://www.msn.com[/URL]
[[email protected]][email protected][/EMAIL]
[IMG]www.msn.com/images/test.jpg[/IMG]
[IMG]http://www.msn.com/images/test.jpg[/IMG]
下面的例子將然而非常需要分別被自動轉換成網絡&電子郵件中的鏈接:
www.msn.com
http://www.msn.com
[email protected]
理想情況下,'轉換'的鏈接只需要根據本文前面的初始示例應用適當的定製標籤,而不是:
<a href="..." etc.
他們會成爲:
[URL=http://www.. etc.)
不幸的是,我們有存儲在整個這個定製標記的歷史數據,的很多,所以現在,我們想保留,與其實現完全新的方式來存儲我們的用戶帖子。
任何幫助將不勝感激。
謝謝。
這段代碼證明非常有用,我剛剛調整了幾個位來適應我的定製標記,到目前爲止它似乎在勾選所有框 - 留下我的定製標記未處理,但處理所有我需要的URL/Email實例。 source = Regex.Replace(source,@「([\ s])(www \ .. *?| http://.*?)( [\ s])「,」$ 1 [URL = $ 2] $ 2 [/ URL] $ 3「); source = Regex.Replace(source,@」([\ s])([a-zA-Z_0-9 .-] + \ @ @ [a-zA-Z_0-9 .-] + \。\ w +)([\ s])「,」$ 1 [EMAIL = $ 2] $ 2 [/ EMAIL] $ 3「); source = Regex.Replace(source,@「URL = www \。」,「URL = http:// www。」); 今天早上我會繼續進行一些額外的測試,然後回來...... – marcusstarnes 2010-06-15 08:50:23
這似乎很好地工作 - 我一直在做很多測試,並且一直無法破解(迄今爲止),因此將此標記爲已接受回答。再次感謝你的幫助! – marcusstarnes 2010-06-15 11:41:24
很高興幫助!正則表達式是我至少要學習的東西之一,然後在下一次我需要對它們做些什麼的時候忘記它。 – Amethi 2010-06-15 20:15:03