
Ovan ett första utkast av den kommande webbplatsen mapusers.com Webbplatsen kommer innehålla några miljoner geopositioner redan vid publicering, bland annat städer, sjöar etc.
Dock saknades förklarande adresser för punkterna. Därmed var det bara att börja koda. De flesta exemplen på hur man skapar friendly urls saknade insikten om våra svenska specialtecken, fransmännens egenheter m.fl.

Så jag gjorde en egen sammanställning som du kan se nedan kod för. Efter det var det bara att bygga en console application som hämtade 10 000 poster i taget, som saknade innehåll i fältet SLUG, och anropa Helpers.Utils.UrlToFriendly("namnet på platsen") och sedan uppdatera posten i databasen.
Det tog nästan hela natten, men till skillnad från datorn fick ju jag sova :)
Kodexempel för att skapa friendly URLs
using System;
using System.Text.RegularExpressions;
namespace Helpers {
public class Utils {
public static string UrlToFriendly(string Input)
{
if (String.IsNullOrEmpty(Input))
return "";
// remove entities
Input = Regex.Replace(Input, @"&\\w+;", "");
// Swedish and special chars
Input = Regex.Replace(Input, "(\[åäá\])", "a", RegexOptions.Singleline | RegexOptions.IgnoreCase | RegexOptions.Multiline);
Input = Regex.Replace(Input, "(\[öó\])", "o", RegexOptions.Singleline | RegexOptions.IgnoreCase | RegexOptions.Multiline);
Input = Regex.Replace(Input, "(\[éè\])", "e", RegexOptions.Singleline | RegexOptions.IgnoreCase | RegexOptions.Multiline);
Input = Regex.Replace(Input, "(\[úü\])", "u", RegexOptions.Singleline | RegexOptions.IgnoreCase | RegexOptions.Multiline);
Input = Regex.Replace(Input, "(\[ñ\])", "n", RegexOptions.Singleline | RegexOptions.IgnoreCase | RegexOptions.Multiline);
Input = Regex.Replace(Input, "(\[í\])", "i", RegexOptions.Singleline | RegexOptions.IgnoreCase | RegexOptions.Multiline);
// remove anything that is not letters, numbers, dash, or space
Input = Regex.Replace(Input, @"\[^A-Za-z0-9\\-\\s\]", "");
// remove any leading or trailing spaces left over
Input = Input.Trim();
// replace spaces with single dash
Input = Regex.Replace(Input, @"\\s+", "-");
// if we end up with multiple dashes, collapse to single dash
Input = Regex.Replace(Input, @"\\-{2,}", "-");
// make it all lower case
Input = Input.ToLower();
// if it's too long, clip it
if (Input.Length > 80)
Input = Input.Substring(0, 79);
// remove trailing dash, if there is one
if (Input.EndsWith("-"))
Input = Input.Substring(0, Input.Length - 1);
return Input;
}
}
}
Här har du koden som ZIP-fil » (webbstrategiforalla.se/upload/utveckling/FriendlyURLs_nov_2010.zip)