Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: Psyke1 en 6 Junio 2010, 20:33 pm



Título: [SRC][Funcion] Clean_Html_Code [by *PsYkE1*]
Publicado por: Psyke1 en 6 Junio 2010, 20:33 pm
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
  1. ' ////////////////////////////////////////////////////////////////
  2. ' // *Autor: *PsYkE1* (miguelin.majo@gmail.com)                 //
  3. ' // *Podeis agrandar o reducir el codigo, siempre y cuando se  //
  4. ' // respete la autoria y se me comuniquen esos cambios.        //
  5. ' // *Visita http://foro.rthacker.net                           //
  6. ' ////////////////////////////////////////////////////////////////
  7.  
  8. Option Explicit
  9.  
  10. Private Declare Function IsCharAlphaNumeric Lib "user32" Alias "IsCharAlphaNumericA" (ByVal cChar As Byte) As Long
  11.  
  12. Public Function Clean_Html_Code(ByVal sHtmlCode As String) As String
  13.    Const ValidSymbolChars             As String = ",.?¿!¡=+-*Ç""_:%$·/|\ºª@ "
  14.    Const StartInvalidString           As String = "<{[(&"
  15.    Const StopInvalidString            As String = ">}];"
  16.    Dim sActualChar                    As String * 1
  17.    Dim bIgnoreString                  As Boolean
  18.    Dim lTotalChar                     As Long
  19.    Dim x                              As Long
  20.    Dim y                              As Long
  21.  
  22.    lTotalChar = Len(sHtmlCode)
  23.    If lTotalChar > 0 Then
  24.        For x = 1 To lTotalChar
  25.            sActualChar = Mid$(sHtmlCode, x, 1)
  26.            If InStr(StartInvalidString, sActualChar) <> 0 Then bIgnoreString = True
  27.            If bIgnoreString = False Then
  28.                If IsCharAlphaNumeric(Asc(sActualChar)) Or InStr(ValidSymbolChars, sActualChar) <> 0 Then
  29.                    Clean_Html_Code = Clean_Html_Code & sActualChar
  30.                End If
  31.            End If
  32.            If InStr(StopInvalidString, sActualChar) <> 0 Then bIgnoreString = False
  33.        Next
  34.        Do Until InStr(1, Clean_Html_Code, "  ") = 0
  35.            Clean_Html_Code = Replace$(Clean_Html_Code, "  ", " ")
  36.            DoEvents
  37.        Loop
  38.    End If
  39. 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
  1. 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! :)


Título: Re: [SRC][Funcion] Clean_Html_Code [by *PsYkE1*]
Publicado por: raul338 en 7 Junio 2010, 07:15 am
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)


Título: Re: [SRC][Funcion] Clean_Html_Code [by *PsYkE1*]
Publicado por: Psyke1 en 7 Junio 2010, 09:09 am
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... ;)
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!