miércoles, 11 de agosto de 2010

Eliminar acentos y otros caracteres con ASP clásico

Una práctica función en asp clásico (vbscript) que sustituye vocales acentuadas y otros caracteres por el equivalente que se elija.

Function EliminarAcentos(texto)

    Dim i, s1, s2
    s1 = "ÁÀÉÈÍÏÓÒÚÜáàèéíïóòúüñç"
    s2 = "AAEEIIOOUUaaeeiioouunc"
    If Len(texto) <> 0 Then
        For i = 1 To Len(s1)
            texto = Replace(texto, Mid(s1,i,1), Mid(s2,i,1))
        Next
    End If
    
    EliminarAcentos = texto

End Function

Esta otra función es bastante más completa, utiliza además expresiones regulares para eliminar cualquier caracter no permitido en una URL, lo que nos permite limpiar o formatear una cadena de texto para su uso como URL amigable hacia una página concreta de nuestro sitio web.

Function LimpiarUrl(ByVal texto)
    
    Dim objRegExp
    Set objRegExp = New Regexp
    
    objRegExp.IgnoreCase = True
    objRegExp.Global = True
    
    objRegExp.Pattern = "\s+"
    texto = objRegExp.Replace(texto, " ")
    
    objRegExp.Pattern = "[(?*"",\\<>&#~%{}+.@:\/!;']+"
    texto = objRegExp.Replace(texto, "")
    
    Dim i, s1, s2
    s1 = "ÁÀÉÈÍÏÓÒÚÜáàèéíïóòúüñç "
    s2 = "AAEEIIOOUUaaeeiioouunc-"
    If Len(texto) <> 0 Then
        For i = 1 To Len(s1)
            texto = Replace(texto, Mid(s1,i,1), Mid(s2,i,1))
        Next
    End If

    LimpiarUrl = LCase(texto)

End Function