2009-05-01 8 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)); 

このコードは、その1つだけの行にクリーンでSEO'd URL年代を作り、PHPと私のために動作しますが、私は私の中で同じスクリプトを使用したいですASP.NET(C#)アプリケーション。しかし、C#でこの行のコードが何になるのか分かりません。誰もこのPHPコードをC#関数に変換してください。あなたはMatchEvaluatorReplaceオーバーロードを使用して一つにそれを書き換えることができても

おかげ

答えて

1

は(それは少しハックだろう)、それは呼び出しを置き換える2つの正規表現でそれを行うには、おそらく最も簡単ですが、それをシンプルに保つために。

using System.Text.RegularExpressions; 

// ... 

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

希望します。

+0

あなたは、それがうまくいかないかどうかもっと具体的にすることができますか?それはPHPから直接変換されています。違いがない限り、特別な文字は、URL SEO(ダッシュ区切り)を作っていません。( – Prashant

+0

@Prashant:正規表現機能では問題は見えません(ただし、テストされていないことは認めます) – Noldorin

+0

@ Noldorin、あなたのコードを1行で使用しているときに、&のような特殊文字を置き換えない。等々...私は別々に両方のREGExを1つずつ適用することによってそれを別々に試みましたが、それでも同じではありません。もしこれらのRegExpressionsが有効でないと思われる場合は、 – Prashant

0
私が原因睡眠不足に何かを欠落している可能性があり..しかし、あなたは、単にこれを行うことができませんでし

:それは交換していない

var myUrl = HttpUtility.UrlEncode(UrlToEncode); 

ダッシュエンコーディングを行うには...

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

ちょっと@daracop :)とにかく、私は "ASP.NETキャッシュテクニック"を "asp-net-caching-techniques"に変換して、検索エンジンのより良いURLを提供できるようにしたいと思っています。 SOがやっているようにhttp://stackoverflow.com/questions/812083/how-to-convert-this-php-script-into-c – Prashant

+0

HttpUtility.UrlEncode(UrlToEncode);私のタイトルをダッシュ​​で区切られたURLに変換しません。 – Prashant

+0

Ok ..私は答えを編集しました。蚊を殺すために大砲を使用しようとしているようです。 – datacop

関連する問題