Funzione di titolo SEO?
Domanda
Ho creato una funzione che converte qualsiasi stringa in delimitata da tabulazioni.
What's new in ASP.NET 4.0
Quindi convertirà il titolo sopra in:
what-s-new-in-asp-net-4-0
Lo sto usando per rendere SEO del mio URL. Ma non sono sicuro che funzionerà bene in tutti i casi o meno. Fino ad ora ho testato questa funzione su circa 1000 record nel mio database e funziona benissimo per tutti i titoli. Guyz, controlla questa funzione e fammi sapere se c'è la possibilità di fallire questa funzione, e se c'è la possibilità che questa funzione possa fallire, allora per favore dimmi la funzione corretta che posso usare nella mia app.
public string SEO_makeTitle(object objTitle)
{
string strTitle = Convert.ToString(objTitle);
strTitle = Regex.Replace(strTitle.Trim(), @"\W", " "); //replace special chars
strTitle = Regex.Replace(strTitle.Trim(), @"\s{2,}", " "); //replace double space
strTitle = strTitle.Trim().Replace(" ", "-").ToLower();
return strTitle; //return - delimited title
}
Grazie
Soluzione
Potresti prendere in considerazione l'aspetto degli accenti. Stai sostituendo " special " caratteri, ma dubito che ciò includa lettere non ASCII.
Proverei prima a convertire i caratteri accentati in caratteri non accentati. C'è un modo relativamente semplice per farlo in C # se conosci il trucco:
static string RemoveAccents (string input)
{
string normalized = input.Normalize(NormalizationForm.FormKD);
Encoding removal = Encoding.GetEncoding
(Encoding.ASCII.CodePage,
new EncoderReplacementFallback(""),
new DecoderReplacementFallback(""));
byte[] bytes = removal.GetBytes(normalized);
return Encoding.ASCII.GetString(bytes);
}
Puoi anche usare esplicitamente ToLower (CultureInfo.InvariantCulture)
per evitare problemi se esegui il codice in Turchia. Questo probabilmente non sarebbe un problema se si esegue ToLower prima di eseguire RemoveAccents
, ammesso.