[SRC][Funcion] Clean_Html_Code [by *PsYkE1*]

Iniciado por Psyke1, 6 Junio 2010, 20:33 PM

0 Miembros y 1 Visitante están viendo este tema.

Psyke1

Hola a todos, aqui mi ultima funcion: Clean_Html_Code
Me llamareis pesao ya con tanta cadena, pero bueno... :laugh:
Esta funcion lo que hace es limpiar el Html de <strong>, <b>(entre otros)...
De esta forma es mas facil trabajar con la cadena, utilizo este metodo mientras aprendo ExprReg... :silbar:
Código (vb) [Seleccionar]

' ////////////////////////////////////////////////////////////////
' // *Autor: *PsYkE1* (miguelin.majo@gmail.com)                 //
' // *Podeis agrandar o reducir el codigo, siempre y cuando se  //
' // respete la autoria y se me comuniquen esos cambios.        //
' // *Visita http://foro.rthacker.net                           //
' ////////////////////////////////////////////////////////////////

Option Explicit

Private Declare Function IsCharAlphaNumeric Lib "user32" Alias "IsCharAlphaNumericA" (ByVal cChar As Byte) As Long

Public Function Clean_Html_Code(ByVal sHtmlCode As String) As String
    Const ValidSymbolChars             As String = ",.?¿!¡=+-*Ç""_:%$·/|\ºª@ "
    Const StartInvalidString           As String = "<{[(&"
    Const StopInvalidString            As String = ">}];"
    Dim sActualChar                    As String * 1
    Dim bIgnoreString                  As Boolean
    Dim lTotalChar                     As Long
    Dim x                              As Long
    Dim y                              As Long
   
    lTotalChar = Len(sHtmlCode)
    If lTotalChar > 0 Then
        For x = 1 To lTotalChar
            sActualChar = Mid$(sHtmlCode, x, 1)
            If InStr(StartInvalidString, sActualChar) <> 0 Then bIgnoreString = True
            If bIgnoreString = False Then
                If IsCharAlphaNumeric(Asc(sActualChar)) Or InStr(ValidSymbolChars, sActualChar) <> 0 Then
                    Clean_Html_Code = Clean_Html_Code & sActualChar
                End If
            End If
            If InStr(StopInvalidString, sActualChar) <> 0 Then bIgnoreString = False
        Next
        Do Until InStr(1, Clean_Html_Code, "  ") = 0
            Clean_Html_Code = Replace$(Clean_Html_Code, "  ", " ")
            DoEvents
        Loop
    End If
End Function

Un ejemplo, tengo esto:
Citar
         <table border="0" width="100%" align="center" cellspacing="1" cellpadding="3" class="bordercolor">
            <tr class="titlebg">
               <td>Crear nuevo tema</td>
Hago la llamada asi(suponiendo que sData es el String donde tengo almacenado el codigo Html):
Código (vb) [Seleccionar]

sData = Clean_Html_Code(sData)

La funcion me devuelve esto:
Citar
Crear nuevo tema

Si veis cualquier cosa mal o que se pueda mejorar, decirmela! ;)

Espero que os haya gustado! :P

Salu2! :)

raul338

Esta bueno, lindo code

Solo una duda que surgio mientras lo leia (no lo probe, estoy en el movil xd) es que estas utilizando IsCharAlpha y IsCharAlphaNumeric para el mismo fin!! O sea, practicamnte estas comprobando 2 veces la misma cosa (ante una letra ambas dan true).


Igual parece bueno, aunque con Exp.Reg se puede hacer mas corto (al menos eso creo :xD)

Psyke1

#2
Hola raul388! Gracias por el apunte! ;-)
Pense que IsCharAlpha te devuelve si es letra y IsCharAlphaNumeric te devuelve si es un numero...  :-\
Me acabo de dar cuenta que tienes razon...  :xD Solo con IsCharAlphaNumeric me vale... ;)
Cita de: raul338 en  7 Junio 2010, 07:15 AM
Igual parece bueno, aunque con Exp.Reg se puede hacer mas corto (al menos eso creo :xD)
JAJAJA :laugh:
Bueno ya sabes, hice este metodo mientras aprendo a usar Exp.Reg... :silbar:
Me alegro de que te guste! ;D

Salu2! ;)

EDITO: SRC CORREGIDO!