Aquí os dejo una función que he hecho para una librería que hice hace tiempo y estoy reescribiendo, para dejarla mucho mejor... Más comprensible, fácil de usar ...
(cuando la tenga lista la cuelgo por si alguien quiere usarla).
Pero como hace tiempo que no aporto nada por aquí, os dejo mientras tanto esta función que le puede ir bien a los que trabajen con páginas web directamente: manipulando el código fuente de estas (con _InetGetSource() por ejemplo (creo que es así la función)), para buscar información en estas, etc.
En realidad, esta es una función interna de la UDF de la que hablaba, pero es tan flexible que al final creo que podría ser perfectamente una función de usuario.
Lo que hace, es, eliminar código de una página web. En principio quitar el HTML de una web no sería muy complicado; pero esta función permite eliminar código por lenguajes.
Como sabemos, las páginas web suelen tener HTML, JAVASCRIPT, CSS...
Con esta función, podemos elegir si eliminar del contenido de una web solo código HTML, solo código JAVASCRIPT, código CSS o comentarios HTML. Esto último, lo he hecho independiente del HTML, JAVASCRIPT o CSS, porque su sintaxis es un tanto distinta. Además, la idea del objetivo de la función es, eliminar lo que no necesitemos, y un programa puede tener muchas necesidades distintas.
Puede que un programa necesite eliminar etiquetas HTML pero no el código JAVASCRIPT, eliminar el código JAVASCRIPT pero no las etiquetas HTML...
Y por eso mismo, puestos a darle flexibilidad a la función, y hacer que sirva en el mayor de casos posible, he pensado que podrían hacer falta los comentarios HTML de una página web, pero no las etiquetas HTML o el código JAVASCRIPT :).
Además de todo esto, la función permite eliminar o mantener las cabeceras HTML de una página web si las hubiera. Esto es así, porque puede en algún momento ser útil para algo consultar las cabeceras HTML. Por ejemplo, si a alguien le da por hacer un navegador... :P.
Y por último, la función permite insertar marcadores en el código de la página web que reciba.
Esto puede ser útil, por ejemplo para hacer más rápida la búsqueda de información en el texto que nos devuelve la función.
Si por ejemplo sabemos que hay un encabezado 4 en la página, y después de este se encuentra la información que queremos, no es necesario recorrer todo el texto, con un bucle por ejemplo. Podríamos insertar un marcador antes de "<h4". Por ejemplo "InfoRef" y buscar a partir de "InfoRef" la información que queremos en el texto devuelto por la función (donde aparecerá "InfoRef" como parte del contenido de la web), teniendo así que procesar menos información.
Los marcadores, también pueden ser útiles en los casos en que tengamos como referencia para encontrar cierta información en una página web, una etiqueta HTML, código JAVASCRIPT o comentario HTML, pero queramos eliminar ese contenido. En ese caso, si la referencia era la carga de una imagen por ejemplo, como sabemos que el código HTML que carga esa imagen desaparecerá porque hemos dicho a la función que elimine todo el código HTML, podemos poner un marcador delante de esa etiqueta HTML para mantener la referencia.
¡Casi lo olvido!
:)
También es posible que la función convierta todos los carácteres HTML especiales en carácteres ASCII.
Todas las opciones son independientes unas de otras, por lo que podría usarse la función por ejemplo solo para convertir los carácteres HTML especiales en carácteres ASCII, solo para quitar las cabeceras HTML de una página web, etc.
Os preguntaréis, que "por qué no carga el código de la página web que queremos procesar directamente" en vez de mandárselo como una cadena.
Como he dicho, en principio es una función interna de una UDF, por lo que esa tarea la hace otra función, ese es el motivo. En la UDF habrá una función para obtener el código de una web, también interna en principio, pero perfectamente funcional para el usuario; pero ¡habrá que esperar que la UDF esté lista! :).
Os parecerá que me he pasado documentando el código... Puede ser :). Pero me he acostumbrado a hacerlo así. El mantenimiento a medio o largo plazo es hasta posible :).
Además, en códigos tan liosos como este, prefiero documentarlo todo, para sin tener que pararme a analizar un montón de funciones o condiciones anidadas, saber que hace cualquier parte del código rápidamente :P.
He escrito el código lo más optimizado que se me ha ocurrido (borrando cientos de veces gran parte :)) y con el máximo control de errores, para intentar garantizar al máximo que la función sea ligera y falle si lo hace, lo menos posible.
Aunque, quizá a alguien se le ocurra otra forma más corta de hacerlo...
En cualquier caso, lo que más ocupa es la conversión de carácteres HTML especiales a carácteres ASCII.
Y después del rollo que he soltado :), ahí va la función. Está documentada, pero he preferido explicaros un poco lo que hace y como funciona, por si la documentación no es muy buena ... :).
Está más que testeada, pero ya sabéis, nunca se sabe :P.
Si encontráis algún error decidlo:
Código: Seleccionar todo
Func _Adsl_WebCodeStrip($ArgDoc, $ArgHtmlStrip=1, $ArgJsStrip=1, $ArgCssStrip=1, $ArgCommStrip=1, $ArgHeadStrip=1, $ArgEspCharMod=1, $ArgMarkIns="", $ArgSubStr="", $ArgStrUpper=0, $ArgNumMarkIns=0)
#CS
----------
Descripción:
- Elimina código HTML, JAVASCRIPT, comentarios HTML y convierte carácteres HTML especiales en carácteres ASCII, de una página web.
Parámetro(s):
- $ArgDoc: Contenido de una página web.
- $ArgHtmlStrip: (1) Elimina código HTML:
- 0=No eliminar.
- 1=Eliminar.
- $ArgJsStrip: (1) Elimina código JAVASCRIPT:
- 0=No eliminar.
- 1=Eliminar.
- $ArgCssStrip: (1) Elimina código CSS:
- 0=No eliminar.
- 1=Eliminar.
- $ArgCommStrip: (1) Eliminar comentarios HTML:
- 0=No eliminar.
- 1=Eliminar.
- $ArgHeadStrip: (1) Elimina cabeceras HTML:
- 0=No eliminar.
- 1=Eliminar.
- $ArgEspCharMod: (1) Convierte carácteres HTML especiales en carácteres ASCII:
- 0=No convertir.
- 1=Convertir.
- $ArgMarkIns: ("") Marcador a insertar.
Si $ArgMarkIns se inserta dentro de un comentario HTML o código JAVASCRIPT y $ArgCommStrip o $ArgJsStrip respectivamente valen "1", $ArgMarkIns se colocará en el lugar del elemento al que pertenece, pero este será eliminado:
- "" no inserta ningún marcador.
- $ArgSubStr: ("") Subcadena en $ArgDoc ante la que se insertará $ArgMarkIns.
Si $ArgMarkIns recibe un valor y este parámetro no recibe ninguno, la función devolverá 0.
$ArgMarkIns será insertado de forma independiente en la línea anterior al contenido de este parámetro.
Si el contenido de este parámetro no se encuentra en $ArgDoc, $ArgMarkIns no será insertado.
- $ArgStrUpper: (0) Caso sensitivo en la búsqueda de $ArgSubStr.
Si $ArgMarkIns no recibe ningún valor, este parámetro será ignorado:
- 0=No usar caso sensitivo.
- 1=Usar caso sensitivo.
- $ArgNumMarkIns: (0) Cantidad de veces a insertar $ArgMarkIns.
Si $ArgMarkIns no recibe ningún valor, este parámetro será ignorado.
Si la cantidad de veces a insertar $ArgMarkIns es mayor que las veces que aparece $ArgSubStr en $ArgDoc, se insertará $ArgMarkIns en $ArgDoc, tantas veces como $ArgSubStr aparezca en esta:
- 0=Todas las veces que se encuentre $ArgSubStr en $ArgDoc.
Valor(es) de retorno:
- OK: $ArgDoc modificada, según la configuración establecida.
- 0: Ocurrió un error al eliminar código HTML, JAVASCRIPT, comentarios HTML o convertir carácteres HTML especiales en carácteres ASCII.
----------
#CE
;Variables locales:
Local $BuffSTR ;Buffer para almacenar el texto a devolver.
Local $DivSTR ;Dividir "$ArgDoc" por carácteres @CRLF.
Local $InJS=0 ;Bandera para la lectura de código JAVASCRIPT.
Local $InCSS=0 ;Bandera para la lectura de código CSS.
Local $InCOMM=0 ;Bandera para la lectura de comentarios HTML.
;Control de errores:
If (($ArgDoc=="") Or ($ArgHtmlStrip<>0 And $ArgHtmlStrip<>1) Or ($ArgJsStrip<>0 And $ArgJsStrip<>1) Or ($ArgCssStrip<>0 And $ArgCssStrip<>1) Or ($ArgEspCharMod<>0 And $ArgEspCharMod<>1) Or ($ArgStrUpper<>0 And $ArgStrUpper<>1) Or ($ArgNumMarkIns=="" Or StringIsDigit($ArgNumMarkIns)=0 Or $ArgNumMarkIns<0) Or ($ArgCommStrip<>0 And $ArgCommStrip<>1) Or ($ArgHeadStrip<>0 And $ArgHeadStrip<>1)) Then Return 0 ;Si "$ArgHtmlStrip", "$ArgJsStrip", "$ArgEspCharMod", "$ArgStrUpper", "$ArgNumMarkIns", "$ArgCommStrip" o "$ArgHeadStrip" no reciben un valor esperado - Devuelve código de error (0).
;Inserción de marcadores:
If $ArgMarkIns<>"" Then ;Si "$ArgMarkIns" recibe un valor.
If $ArgSubStr=="" Then Return 0 ;Si "$ArgSubStr" no recibe ningún valor - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, $ArgSubStr, "&CRLF"&$ArgMarkIns&"&CRLF"&$ArgSubStr, $ArgNumMarkIns, $ArgStrUpper) ;Inserta "$ArgMarkIns" en "$ArgDoc".
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al insertar "$ArgMarkIns" en "$ArgDoc" - Devuelve código de error (0).
EndIf ;End -> Si "$ArgSubStr" recibe un valor.
;Conversión de carácteres HTML:
If $ArgEspCharMod=1 Then ;Convertir carácteres HTML especiales en carácteres ASCII.
$ArgDoc=StringReplace($ArgDoc, "<", "<", 0, 1) ;Convierte "<" en "<".
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "<" en "<" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, ">", ">", 0, 1) ;Convierte ">" en ">".
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir ">" en ">" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "&", "&", 0, 1) ;Convierte "&" en "&".
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "&" en "&" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, """, """", 0, 1) ;Convierte """ en """.
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir """ en """ - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "Á", "Á", 0, 1) ;Convierte "Á" en "Á".
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "Á" en "Á" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "À", "À", 0, 1) ;Convierte "À" en "À".
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "À" en "À" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "É", "É", 0, 1) ;Convierte "É" en "É".
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "É" en "É" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "È", "È", 0, 1) ;Convierte "È" en "È".
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "È" en "È" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "Í", "Í", 0, 1) ;Convierte "Í" en "Í".
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "Í" en "Í" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "Ì", "Ì", 0, 1) ;Convierte "Ì" en "Ì".
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "Ì" en "Ì" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "Ó", "Ó", 0, 1) ;Convierte "Ó" en "Ó".
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "Ó" en "Ó" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "Ò", "Ò", 0, 1) ;Convierte "Ò" en "Ò".
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "Ò" en "Ò" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "Ú", "Ú", 0, 1) ;Convierte "Ú" en "Ú".
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "Ú" en "Ú" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "Ù", "Ù", 0, 1) ;Convierte "Ù" en "Ù".
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "Ù" en "Ù" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "á", "á", 0, 1) ;Convierte "á" en "á".
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "á" en "á" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "à", "à", 0, 1) ;Convierte "à" en "à".
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "à" en "à" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "é", "é", 0, 1) ;Convierte "é" en "é".
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "é" en "é" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "è", "è", 0, 1) ;Convierte "è" en "è".
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "è" en "è" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "í", "í", 0, 1) ;Convierte "í" en "í".
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "í" en "í" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "ì", "ì", 0, 1) ;Convierte "ì" en "ì".
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "ì" en "ì" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "ó", "ó", 0, 1) ;Convierte "ó" en "ó".
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "ó" en "ó" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "ò", "ò", 0, 1) ;Convierte "ò" en "ò".
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "ò" en "ò" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "ú", "ú", 0, 1) ;Convierte "ú" en "ú".
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "ú" en "ú" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "ù", "ù", 0, 1) ;Convierte "ù" en "ù".
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "ù" en "ù" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "Ä", "Ä", 0, 1) ;Convierte "Ä" en "Ä".
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "Ä" en "Ä" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "Â", "Â", 0, 1) ;Convierte "Â" en "Â".
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "Â" en "Â" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "Ë", "Ë", 0, 1) ;Convierte "Ë" en "Ë".
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "Ë" en "Ë" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "Ê", "Ê", 0, 1) ;Convierte "Ê" en "Ê".
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "Ê" en "Ê" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "Ï", "Ï", 0, 1) ;Convierte "Ï" en "Ï".
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "Ï" en "Ï" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "Î", "Î", 0, 1) ;Convierte "Î" en "Î".
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "Î" en "Î" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "Ö", "Ö", 0, 1) ;Convierte "Ö" en "Ö".
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "Ö" en "Ö" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "Ô", "Ô", 0, 1) ;Convierte "Ô" en "Ô".
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "Ô" en "Ô" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "Ü", "Ü", 0, 1) ;Convierte "Ü" en "Ü".
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "Ü" en "Ü" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "Û", "Û", 0, 1) ;Convierte "Û" en "Û".
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "Û" en "Û" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "ä", "ä", 0, 1) ;Convierte "ä" en "ä".
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "ä" en "ä" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "â", "â", 0, 1) ;Convierte "â" en "â".
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "â" en "â" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "ë", "ë", 0, 1) ;Convierte "ë" en "ë".
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "ë" en "ë" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "ê", "ê", 0, 1) ;Convierte "ê" en "ê".
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "ê" en "ê" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "ï", "ï", 0, 1) ;Convierte "ï" en "ï".
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "ï" en "ï" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "î", "î", 0, 1) ;Convierte "î" en "î".
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "î" en "î" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "ö", "ö", 0, 1) ;Convierte "ö" en "ö".
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "ö" en "ö" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "ô", "ô", 0, 1) ;Convierte "ô" en "ô".
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "ô" en "ô" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "ü", "ü", 0, 1) ;Convierte "ü" en "ü".
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "ü" en "ü" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "û", "û", 0, 1) ;Convierte "û" en "û".
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "û" en "û" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "Ã", "Ã", 0, 1) ;Convierte "Ã" en "Ã".
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "Ã" en "Ã" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "å", "å", 0, 1) ;Convierte "å" en "å".
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "å" en "å" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "Ñ", "Ñ", 0, 1) ;Convierte "Ñ" en "Ñ".
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "Ñ" en "Ñ" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "Å", "Å", 0, 1) ;Convierte "Å" en "Å".
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "Å" en "Å" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "Õ", "Õ", 0, 1) ;Convierte "Õ" en "Õ".
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "Õ" en "Õ" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "Ç", "Ç", 0, 1) ;Convierte "Ç" en "Ç".
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "Ç" en "Ç" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "ã", "ã", 0, 1) ;Convierte "ã" en "ã".
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "ã" en "ã" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "ç", "ç", 0, 1) ;Convierte "ç" en "ç".
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "ç" en "ç" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "ñ", "ñ", 0, 1) ;Convierte "ñ" en "ñ".
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "ñ" en "ñ" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "Ý", "Ý", 0, 1) ;Convierte "Ý" en "Ý".
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "Ý" en "Ý" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "õ", "õ", 0, 1) ;Convierte "õ" en "õ".
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "õ" en "õ" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "ý", "ý", 0, 1) ;Convierte "ý" en "ý".
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "ý" en "ý" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "Ø", "Ø", 0, 1) ;Convierte "Ø" en "Ø".
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "Ø" en "Ø" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "ÿ", "ÿ", 0, 1) ;Convierte "ÿ" en "ÿ".
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "ÿ" en "ÿ" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "ø", "ø", 0, 1) ;Convierte "ø" en "ø".
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "ø" en "ø" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "Þ", "Þ", 0, 1) ;Convierte "Þ" en "Þ".
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "Þ" en "Þ" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "Ð", "Ð", 0, 1) ;Convierte "Ð" en "Ð".
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "Ð" en "Ð" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "þ", "þ", 0, 1) ;Convierte "þ" en "þ".
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "þ" en "þ" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "ð", "ð", 0, 1) ;Convierte "ð" en "ð".
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "ð" en "ð" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "Æ", "Æ", 0, 1) ;Convierte "Æ" en "Æ".
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "Æ" en "Æ" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "ß", "ß", 0, 1) ;Convierte "ß" en "ß".
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "ß" en "ß" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "æ", "æ", 0, 1) ;Convierte "æ" en "æ".
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "æ" en "æ" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "¼", "¼", 0, 1) ;Convierte "¼" en "¼".
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "¼" en "¼" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, " ", Chr(160), 0, 1) ;Convierte " " en Chr(160).
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir " " en Chr(160) - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "½", "½", 0, 1) ;Convierte "½" en "½".
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "½" en "½" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "¡", "¡", 0, 1) ;Convierte "¡" en "¡".
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "¡" en "¡" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "¾", "¾", 0, 1) ;Convierte "¾" en "¾".
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "¾" en "¾" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "£", "£", 0, 1) ;Convierte "£" en "£".
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "£" en "£" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "©", "©", 0, 1) ;Convierte "©" en "©".
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "©" en "©" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "¥", "¥", 0, 1) ;Convierte "¥" en "¥".
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "¥" en "¥" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "®", "®", 0, 1) ;Convierte "®" en "®".
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "®" en "®" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "§", "§", 0, 1) ;Convierte "§" en "§".
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "§" en "§" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "ª", "ª", 0, 1) ;Convierte "ª" en "ª".
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "ª" en "ª" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "¤", "¬", 0, 1) ;Convierte "¤" en "¬".
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "¤" en "¬" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "²", "²", 0, 1) ;Convierte "²" en "²".
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "²" en "²" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "¦", "¦", 0, 1) ;Convierte "¦" en "¦", .
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "¦" en "¦" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "³", "³", 0, 1) ;Convierte "³" en "³", .
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "³" en "³" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "«", "«", 0, 1) ;Convierte "«" en "«", .
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "«" en "«" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "¹", "¹", 0, 1) ;Convierte "¹" en "¹", .
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "¹" en "¹" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "¬", "¬", 0, 1) ;Convierte "¬" en "¬", .
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "¬" en "¬" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "¯", "¯", 0, 1) ;Convierte "¯" en "¯", .
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "¯" en "¯" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "", "", 0, 1) ;Convierte "" en "", .
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "" en "" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "µ", "µ", 0, 1) ;Convierte "µ" en "µ", .
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "µ" en "µ" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "º", "º", 0, 1) ;Convierte "º" en "º", .
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "º" en "º" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "¶", "¶", 0, 1) ;Convierte "¶" en "¶", .
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "¶" en "¶" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "´", "´", 0, 1) ;Convierte "´" en "´", .
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "´" en "´" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "·", "·", 0, 1) ;Convierte "·" en "·", .
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "·" en "·" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "¨", "¨", 0, 1) ;Convierte "¨" en "¨", .
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "¨" en "¨" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "°", "°", 0, 1) ;Convierte "°" en "°", .
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "°" en "°" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "±", "±", 0, 1) ;Convierte "±" en "±", .
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "±" en "±" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "¸", "¸", 0, 1) ;Convierte "¸" en "¸", .
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "¸" en "¸" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "»", "»", 0, 1) ;Convierte "»" en "»", .
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "»" en "»" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "¿", "¿", 0, 1) ;Convierte "¿" en "¿", .
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "¿" en "¿" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "×", "×", 0, 1) ;Convierte "×" en "×", .
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "×" en "×" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "¢", "¢", 0, 1) ;Convierte "¢" en "¢", .
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "¢" en "¢" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "÷", "÷", 0, 1) ;Convierte "÷" en "÷", .
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "÷" en "÷" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "€", "€", 0, 1) ;Convierte "€" en "€", .
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "€" en "€" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "“", "“", 0, 1) ;Convierte "“" en "“", .
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "“" en "“" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "™", "™", 0, 1) ;Convierte "™" en "™", .
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "™" en "™" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "”", "”", 0, 1) ;Convierte "”" en "”", .
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "”" en "”" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "‰", "‰", 0, 1) ;Convierte "‰" en "‰", .
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "‰" en "‰" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "Œ", "Œ", 0, 1) ;Convierte "Œ" en "Œ", .
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "Œ" en "Œ" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "ƒ", "ƒ", 0, 1) ;Convierte "ƒ" en "ƒ", .
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "ƒ" en "ƒ" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "‡", "‡", 0, 1) ;Convierte "‡" en "‡", .
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "‡" en "‡" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "†", "†", 0, 1) ;Convierte "†" en "†", .
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al convertir "†" en "†" - Devuelve código de error (0).
EndIf ;End -> Convertir carácteres HTML especiales en carácteres ASCII.
;Tratamiento de cabeceras HTML:
If $ArgHeadStrip=0 Then ;Conservar cabeceras HTML.
If StringInStr($ArgDoc, "<!doctype", 0, 1, 1)>1 Then ;Si hay datos antes de la etiqueta "<!doctype".
$BuffSTR=StringMid($ArgDoc, 1, (StringInStr($ArgDoc, "<!doctype", 0, 1, 1)-1)) ;Extrae las cabeceras HTML.
$ArgDoc=StringReplace($ArgDoc, StringMid($ArgDoc, 1, (StringInStr($ArgDoc, "<!doctype", 0, 1, 1)-1)), "", 0, 0) ;Elimina las cabeceras HTML.
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al eliminar las cabeceras HTML - Devuelve código de error (0).
ElseIf (StringInStr($ArgDoc, "<!doctype", 0, 1, 1)=0 And StringInStr($ArgDoc, "<html", 0, 1, 1)>1) Then ;Si hay datos antes de la etiqueta "<html" y no existe la etiqueta "<!doctype".
$BuffSTR=StringMid($ArgDoc, 1, (StringInStr($ArgDoc, "<html", 0, 1, 1)-1)) ;Extrae las cabeceras HTML.
$ArgDoc=StringReplace($ArgDoc, StringMid($ArgDoc, 1, (StringInStr($ArgDoc, "<html", 0, 1, 1)-1)), "", 0, 0) ;Elimina las cabeceras HTML.
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al eliminar las cabeceras HTML - Devuelve código de error (0).
EndIf ;End -> Si hay datos antes de la etiqueta "<!doctype".
Else ;No conservar cabeceras HTML.
If StringInStr($ArgDoc, "<!doctype", 0, 1, 1)>1 Then ;Si hay datos antes de la etiqueta "<!doctype".
$ArgDoc=StringReplace($ArgDoc, StringMid($ArgDoc, 1, (StringInStr($ArgDoc, "<!doctype", 0, 1, 1)-1)), "", 0, 0) ;Elimina las cabeceras HTML.
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al eliminar las cabeceras HTML - Devuelve código de error (0).
ElseIf StringInStr($ArgDoc, "<html", 0, 1, 1)>1 Then ;Si hay datos antes de la etiqueta "<html".
$ArgDoc=StringReplace($ArgDoc, StringMid($ArgDoc, 1, (StringInStr($ArgDoc, "<html", 0, 1, 1)-1)), "", 0, 0) ;Elimina las cabeceras HTML.
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al eliminar las cabeceras HTML - Devuelve código de error (0).
EndIf ;End -> Si hay datos antes de la etiqueta "<!doctype".
EndIf ;End -> Conservar cabeceras HTML.
;Preparación de "$ArgDoc" para el procesamiento:
$ArgDoc=StringReplace($ArgDoc, @Tab, "", 0, 0) ;Elimina todos los carácteres @Tab.
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al eliminar todos los carácteres @Tab - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, @CRLF, "", 0, 0) ;Elimina todos los carácteres @CRLF.
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al eliminar todos los carácteres @CRLF - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, @CR, "", 0, 0) ;Elimina todos los carácteres @CR.
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al eliminar todos los carácteres @CR - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, @LF, "", 0, 0) ;Elimina todos los carácteres @LF.
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al eliminar todos los carácteres @LF - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, ">", ">"&@CRLF, 0, 0) ;Reemplaza todos los carácteres ">" por ">"&@CRLF.
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al reemplazar todos los carácteres ">" por ">"&@CRLF - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "<", @CRLF&"<", 0, 0) ;Reemplaza todos los carácteres "<" por @CRLF&"<".
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al reemplazar todos los carácteres "<" por @CRLF&"<" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "<!--", "<!--"&@CRLF, 0, 0) ;Reemplaza todas las etiquetas de inicio de comentario HTML por "<!--"&@CRLF.
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al reemplazar todas las etiquetas de inicio de comentario HTML por "<!--"&@CRLF - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "-->", @CRLF&"-->", 0, 0) ;Reemplaza todas las etiquetas de fin de comentario HTML por @CRLF&"-->".
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al reemplazar todas las etiquetas de fin de comentario HTML por @CRLF&"-->" - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, @CRLF&@CRLF, @CRLF, 0, 0) ;Reemplaza todos los carácteres @CRLF&@CRLF por @CRLF.
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al reemplazar todos los carácteres @CRLF&@CRLF por @CRLF - Devuelve código de error (0).
$ArgDoc=StringReplace($ArgDoc, "&CRLF", @CRLF, 0, 0) ;Reemplaza todos los carácteres "&CRLF" por carácteres @CRLF.
If ($ArgDoc=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al reemplazar todos los carácteres "&CRLF" por carácteres @CRLF - Devuelve código de error (0).
;Procesamiento de "$ArgDoc":
$DivSTR=StringSplit($ArgDoc, @CRLF) ;Divide "$ArgDoc" por carácteres @CRLF.
If (Not IsArray($DivSTR) Or $DivSTR[0]=0) Then Return 0 ;Si ocurrió un error al dividir "$ArgDoc" por carácteres @CRLF - Devuelve código de error (0).
For $I=1 To $DivSTR[0] Step +1 ;Leer "$ArgDoc" por líneas.
If ($DivSTR[$I]==@CRLF Or $DivSTR[$I]==@CR Or $DivSTR[$I]==@LF Or $DivSTR[$I]==Chr(160) Or StringIsSpace($DivSTR[$I])=1 Or $DivSTR[$I]=="") Then ContinueLoop ;Si la línea actual contiene solo carácteres @CRLF, @CR, @LF, "Chr(160)", espacios en blanco o no contiene nada - Continúa con la siguiente iteración del bucle.
If ((StringInStr($DivSTR[$I], "<", 0, 1, 1)<>0 And StringInStr($DivSTR[$I], ">", 0, 1, StringInStr($DivSTR[$I], "<", 0, 1, 1))<>0) And ((StringMid($DivSTR[$I], (StringInStr($DivSTR[$I], "<", 0, 1, 1)+1), 6)<>"script" And StringMid($DivSTR[$I], (StringInStr($DivSTR[$I], "<", 0, 1, 1)+1), 7)<>"/script") And (StringMid($DivSTR[$I], (StringInStr($DivSTR[$I], "<", 0, 1, 1)+1), 5)<>"style" And StringMid($DivSTR[$I], (StringInStr($DivSTR[$I], "<", 0, 1, 1)+1), 6)<>"/style"))) Then ;Si la línea actual contiene código HTML.
If $ArgHtmlStrip=0 Then ;Copiar la línea actual en el buffer.
$BuffSTR&=@CRLF&StringStripWS($DivSTR[$I], 1) ;Copia la línea actual en el buffer con un salto de línea delante.
EndIf ;End -> Copiar la línea actual en el buffer.
ElseIf StringInStr($DivSTR[$I], "<script", 0, 1, 1)<>0 Then ;Si la línea actual contiene la etiqueta de inicio de código JAVASCRIPT.
If $ArgJsStrip=0 Then ;Copiar código JAVASCRIPT.
$BuffSTR&=@CRLF&StringStripWS($DivSTR[$I], 1) ;Copia la línea actual en el buffer con un salto de línea delante.
EndIf ;End -> Copiar código JAVASCRIPT.
$InJS=1 ;Activar la bandera de lectura de código JAVASCRIPT.
ElseIf StringInStr($DivSTR[$I], "</script", 0, 1, 1)<>0 Then ;Si la línea actual contiene la etiqueta de fin de código JAVASCRIPT.
If $ArgJsStrip=0 Then ;Copiar código JAVASCRIPT.
$BuffSTR&=@CRLF&StringStripWS($DivSTR[$I], 1) ;Copia la línea actual en el buffer con un salto de línea delante.
EndIf ;End -> Copiar código JAVASCRIPT.
$InJS=0 ;Desactivar la bandera de lectura de código JAVASCRIPT.
ElseIf StringInStr($DivSTR[$I], "<style", 0, 1, 1)<>0 Then ;Si la línea actual contiene la etiqueta de inicio de código CSS.
If $ArgCssStrip=0 Then ;Copiar código CSS.
$BuffSTR&=@CRLF&StringStripWS($DivSTR[$I], 1) ;Copia la línea actual en el buffer con un salto de línea delante.
EndIf ;End -> Copiar código CSS.
$InCSS=1 ;Activa la bandera de lectura de código CSS.
ElseIf StringInStr($DivSTR[$I], "</style", 0, 1, 1)<>0 Then ;Si la línea actual contiene la etiqueta de fin de código CSS.
If $ArgCssStrip=0 Then ;Copiar código CSS.
$BuffSTR&=@CRLF&StringStripWS($DivSTR[$I], 1) ;Copia la línea actual en el buffer con un salto de línea delante.
EndIf ;End -> Copiar código CSS.
$InCSS=0 ;Desactiva la bandera de lectura de código CSS.
ElseIf StringInStr($DivSTR[$I], "<!--", 0, 1, 1)<>0 Then ;Si la línea actual contiene la etiqueta de inicio de comentario HTML.
If $ArgCommStrip=0 Then ;Copiar comentario HTML.
$BuffSTR&=@CRLF&StringStripWS($DivSTR[$I], 1) ;Copia la línea actual en el buffer con un salto de línea delante.
EndIf ;End -> Copiar comentario HTML.
$InCOMM=1 ;Activar la bandera de lectura de comentarios HTML.
ElseIf StringInStr($DivSTR[$I], "-->", 0, 1, 1)<>0 Then ;Si la línea actual contiene la etiqueta de fin de comentario HTML.
If $ArgCommStrip=0 Then ;Copiar comentario HTML.
$BuffSTR&=@CRLF&StringStripWS($DivSTR[$I], 1) ;Copia la línea actual en el buffer con un salto de línea delante.
EndIf ;End -> Copiar comentario HTML.
$InCOMM=0 ;Desactivar la bandera de lectura de comentarios HTML.
Else ;Si la línea actual no contiene código HTML, JAVASCRIPT, CSS ni comentarios HTML.
If $InJS=1 Then ;Si se está leyendo código JAVASCRIPT.
If $ArgJsStrip=0 Then ;Copiar código JAVASCRIPT en el buffer.
$BuffSTR&=@CRLF&StringStripWS($DivSTR[$I], 1) ;Copia la línea actual en el buffer con un salto de línea delante.
Else ;Copiar marcadores en código JAVASCRIPT, en el buffer.
If ($ArgMarkIns<>"" And $DivSTR[$I]==$ArgMarkIns) Then ;Si la línea actual es un marcador.
$BuffSTR&=@CRLF&StringStripWS($DivSTR[$I], 1) ;Copia la línea actual en el buffer con un salto de línea delante.
EndIf ;End -> Si la línea actual es un marcador.
EndIf ;End -> Copiar código JAVASCRIPT en el buffer.
ElseIf $InCSS=1 Then ;Si se está leyendo código CSS.
If $ArgCssStrip=0 Then ;Copiar código CSS en el buffer.
$BuffSTR&=@CRLF&StringStripWS($DivSTR[$I], 1) ;Copia la línea actual en el buffer con un salto de línea delante.
Else ;Copiar marcadores en código CSS, en el buffer.
If ($ArgMarkIns<>"" And $DivSTR[$I]==$ArgMarkIns) Then ;Si la línea actual es un marcador.
$BuffSTR&=@CRLF&StringStripWS($DivSTR[$I], 1) ;Copia la línea actual en el buffer con un salto de línea delante.
EndIf ;End -> Si la línea actual es un marcador.
EndIf ;End -> Copiar código CSS en el buffer.
ElseIf $InCOMM=1 Then ;Si se está leyendo un comentario HTML.
If $ArgCommStrip=0 Then ;Copiar comentario HTML en el buffer.
$BuffSTR&=@CRLF&StringStripWS($DivSTR[$I], 1) ;Copia la línea actual en el buffer con un salto de línea delante.
Else ;Copiar marcadores en comentarios HTML, en el buffer.
If ($ArgMarkIns<>"" And $DivSTR[$I]==$ArgMarkIns) Then ;Si la línea actual es un marcador.
$BuffSTR&=@CRLF&StringStripWS($DivSTR[$I], 1) ;Copia la línea actual en el buffer con un salto de línea delante.
EndIf ;End -> Si la línea actual es un marcador.
EndIf ;End -> Copiar comentario HTML en el buffer.
ElseIf ($InJS=0 And $InCOMM=0) Then ;Si no se está leyendo código JAVASCRIPT ni comentarios HTML.
$BuffSTR&=@CRLF&StringStripWS($DivSTR[$I], 1) ;Copia la línea actual en el buffer con un salto de línea delante.
EndIf ;End -> Si se está leyendo código JAVASCRIPT.
EndIf ;End -> Si la línea actual contiene código HTML.
Next ;End -> Leer "$ArgDoc" por líneas.
$BuffSTR=StringReplace($BuffSTR, @CRLF&@CRLF, @CRLF, 0, 0) ;Reemplaza todos los carácteres @CRLF&@CRLF por @CRLF.
If ($BuffSTR=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al reemplazar todos los carácteres @CRLF&@CRLF por @CRLF - Devuelve código de error (0).
$BuffSTR=StringReplace($BuffSTR, Chr(160), "", 0, 0) ;Elimina todos los carácteres "Chr(160)".
If ($BuffSTR=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al eliminar todos los carácteres "Chr(160)" - Devuelve código de error (0).
If (StringMid($BuffSTR, 1, 1)==@CRLF Or StringMid($BuffSTR, 1, 1)==@CR Or StringMid($BuffSTR, 1, 1)==@LF) Then ;Si el primer carácter del buffer es @CRLF, @CR o @LF.
$BuffSTR=StringReplace($BuffSTR, StringMid($BuffSTR, 1, 1), "", 1, 0) ;Elimina el primer carácter del buffer.
If ($BuffSTR=="" Or @Error=1) Then Return 0 ;Si ocurrió un error al eliminar el primer carácter del buffer - Devuelve código de error (0).
EndIf ;End -> Si el primer carácter del buffer es @CRLF, @CR o @LF.
;Retorno de ejecución:
Return $BuffSTR ;Devuelve código de ejecución correcta ($BuffSTR).
EndFunc
Para facilitar la búsqueda de información en el texto que retorna, elimina todos los espacios en blanco previos a una línea, y todos los carácteres de tabulación, saltos de línea dobles, líneas vacías, que solo contengan espacios, etc etc, devolviendo la información que corresponda por líneas según aparece en la página web. Además, así es más sencillo de programar esta función :) y a la hora de buscar algo en lo que devuelve, basta con hacer un StringSplit($Resultado, @CRLF) por ejemplo para tener el texto dividido por líneas, y recorrerlo fácilmente con un For ... Next.
Salu2!