2009-05-01 70 views
0

我從這個問題,下面的代碼:What is the best way to clean a string for placement in a URL, like the question name on SO?如何將此PHP腳本轉換爲C#?

$str = strtolower( 
    preg_replace(array('/[^a-z0-9\- ]/i', '/[ \-]+/'), array('', '-'), 
    $urlPart)); 

該代碼在短短一行對我的作品用PHP,它使清潔和SEO'd URL的,但我想使用相同的腳本在我ASP.NET(C#)應用程序。但不知道C#中這行代碼是什麼。任何人都可以將此PHP代碼轉換爲C#函數。

感謝

回答

1

爲了保持它的簡單,它可能是最簡單的兩個正則表達式來做到這一點取代電話,雖然你可以使用Replace超載與MatchEvaluator把它改寫成一個(這將是一個有點哈克)。

using System.Text.RegularExpressions; 

// ... 

var str = Regex.Replace(Regex.Replace(urlPart, @"[^a-z0-9\- ]/i", ""), @"[ \-]+", "-").ToLower(); 

希望有幫助。

+0

這不是更換特殊字符,簡而言之它不會使URL SEO'd(短劃線分隔):( – Prashant 2009-05-01 16:42:54

+0

@Prashant:你可以更具體地說明它是如何工作的嗎?它直接從PHP轉換而來,所以除非有區別在正則表達式的功能,我沒有看到問題。(但我承認它沒有測試。) – Noldorin 2009-05-01 16:48:29

0

我可能失去了一些東西,由於睡眠不足..但不能只是單純做:

var myUrl = HttpUtility.UrlEncode(UrlToEncode); 

要做到儀表編碼...

var myUrl = HttpUtility.EncodeUrl(UrlToEncode.Replace(" ", "-"));