2016-04-08 18 views

答えて

1

URLスラッグについて質問している場合は、this answerをご覧ください。

以下にコードが含まれています。

/// <summary> 
/// Produces optional, URL-friendly version of a title, "like-this-one". 
/// hand-tuned for speed, reflects performance refactoring contributed 
/// by John Gietzen (user otac0n) 
/// </summary> 
public static string URLFriendly(string title) 
{ 
    if (title == null) return ""; 

    const int maxlen = 80; 
    int len = title.Length; 
    bool prevdash = false; 
    var sb = new StringBuilder(len); 
    char c; 

    for (int i = 0; i < len; i++) 
    { 
     c = title[i]; 
     if ((c >= 'a' && c <= 'z') || (c >= '0' && c <= '9')) 
     { 
      sb.Append(c); 
      prevdash = false; 
     } 
     else if (c >= 'A' && c <= 'Z') 
     { 
      // tricky way to convert to lowercase 
      sb.Append((char)(c | 32)); 
      prevdash = false; 
     } 
     else if (c == ' ' || c == ',' || c == '.' || c == '/' || 
     c == '\\' || c == '-' || c == '_' || c == '=') 
     { 
      if (!prevdash && sb.Length > 0) 
      { 
       sb.Append('-'); 
       prevdash = true; 
      } 
     } 
     else if ((int)c >= 128) 
     { 
      int prevlen = sb.Length; 
      sb.Append(RemapInternationalCharToAscii(c)); 
      if (prevlen != sb.Length) prevdash = false; 
     } 
     if (i == maxlen) break; 
    } 

    if (prevdash) 
     return sb.ToString().Substring(0, sb.Length - 1); 
    else 
     return sb.ToString(); 
} 

あなたはRemapInternationalCharToAsciihereを見つけることができます。

あなたは、これらの線に沿って何かするだろう:コメント欄でご質問パー

string courseName = "Biology #101 - A Beginner's Guide!"; 

string urlFriendlyCourseName = URLFriendly(courseName); 
//outputs biology-101-a-beginners-guide 

アップデートを、あなたはURLでごCourseIDを含めるとDBのエントリと一致することを使用することができます(つまり、12345と一致するのはhttp://mycourses.com/12345/biology-101-a-beginners-guide/)。 CourseIDCourseSlug、またはその両方に一致するように、URLFriendly(courseName)の結果をDB列(例:CourseSlug)に保存する必要があります。

+0

その罰金を符号化するため。今私のケースでは、URLからその文字列をデコードして、データベースに送信したいと考えています。それに基づいて、タイトルがDbで一致する場合、いくつかのデータが返されます。どのようにそれを処理するには? –

+0

更新された回答をご覧ください。 – trashr0x

関連する問題