quarta-feira, 24 de abril de 2002

0

Parâmetros opcionais em javascript

Você sabia que pode, em javascript, criar funções com parãmetros opcionais? Há um operador no javascript que nos ajuda bastante, o typeof. Veja como criar uma função com parãmetros opcionais:


function sorteia(maximo,minimo){
 if(typeof(minimo)!="number")minimo=0
 return Math.floor(Math.random()*(maximo-minimo))+minimo
}


A função retorna um número aleatório entre mínimo e máximo. O valor de mínimo é opcional. Se você passar um valor que não seja numérico ou não passar valor nenhum, a primeira linha da função vai setar mínimo como 0.


Digamos que você queira preencher um valor default apenas se o usuário não passar valor (se ele passar valor que não seja numérico), basta trocar na primeira linha, typeof(minimo)!="number" por typeof(minimo)=="undefined"


 



Esta matéria foi postada originalmente no ASP4Developers por Elcio Luiz Ferreira (site), que na época era " analista-programador apaixonado por javascript, ex-professor, músico amador, ciclista amador, teólogo amador, filósofo amador, escritor amador e comediante amador.". Hoje, vai saber...

0

Validação de Hora

Como validar um campo de formulário ou outro valor qualquer fornecido pelo usuário para que seja uma hora válida?

Eu costumo fazer assim, ponho no começo do documento:

 
<script>
String.prototype.validaHora=function(doze){return !((this.search(/^\d?\d(:\d\d){2}$/)==-1)||(parseInt(this.replace(/:.*/g,""))>(doze?12:24))||(parseInt(this.replace(/.*:(.*):.*/g,"$1"))>59)||(parseInt(this.replace(/.*:/g,""))>59))}
</script>

 

E depois, quando quero testar um valor qualquer, se estiver numa variável x, por exemplo:

 


x.validaHora(true) //Pra validar até 12 horas
x.validaHora(false) //Pra validar até 24 horas

 

Se for um campo de formulário:

 

document.form1.hora.value.validaHora(true)


Esta matéria foi postada originalmente no ASP4Developers por Elcio Luiz Ferreira (site), que na época era " analista-programador apaixonado por javascript, ex-professor, músico amador, ciclista amador, teólogo amador, filósofo amador, escritor amador e comediante amador.". Hoje, vai saber...

segunda-feira, 22 de abril de 2002

0

Veja largura a altura, tamanho em Bytes e as cores de uma imagem


'###############################################
' Este é o teste... coloque qualquer GIF nesta pasta
' E você verá o milagre acontecendo!
' Pode tambem ser com qualquer extensão lembrando
' Somente de mudar no IF ou então adapta-lo para ler
' Qualquer tipo de Arquivo, você pode usar um case!
' se for o caso !!! hehehh

'###############################################
  Set objFSO = CreateObject("Scripting.FileSystemObject")
  Set objF = objFSO.GetFolder("c:\inetpub\wwwroot\minhaimagens")
  Set objFC = objF.Files


  response.write "<table border=""0"" cellpadding=""5"">"


  For Each f1 in objFC
    if instr(ucase(f1.Name), ".JPG") then
       response.write "<tr><td>" & f1.name & "</td><td>" & f1.DateCreated & "</td><td>" & f1.Size & "</td><td>"


       if gfxSpex(f1.Path, w, h, c, strType) = true then
          response.write w & " x " & h & " " & c & " colors"
       else
          response.write "&nbsp;"
       end if


       response.write "</td></tr>"


    end if


  Next


  response.write "</table>"


  set objFC = nothing
  set objF = nothing
  set objFSO = nothing

'##############################################


  function GetBytes(flnm, offset, bytes)


     Dim objFSO
     Dim objFTemp
     Dim objTextStream
     Dim lngSize


     on error resume next


     Set objFSO = CreateObject("Scripting.FileSystemObject")
    
     ' First, we get the filesize
     Set objFTemp = objFSO.GetFile(flnm)
     lngSize = objFTemp.Size
     set objFTemp = nothing


     fsoForReading = 1
     Set objTextStream = objFSO.OpenTextFile(flnm, fsoForReading)


     if offset > 0 then
        strBuff = objTextStream.Read(offset - 1)
     end if


     if bytes = -1 then  ' Get All!


        GetBytes = objTextStream.Read(lngSize)  'ReadAll


     else


        GetBytes = objTextStream.Read(bytes)


     end if


     objTextStream.Close
     set objTextStream = nothing
     set objFSO = nothing


  end function



  function lngConvert(strTemp)
     lngConvert = clng(asc(left(strTemp, 1)) + ((asc(right(strTemp, 1)) * 256)))
  end function


  function lngConvert2(strTemp)
     lngConvert2 = clng(asc(right(strTemp, 1)) + ((asc(left(strTemp, 1)) * 256)))
  end function



  function gfxSpex(flnm, width, height, depth, strImageType)


     dim strPNG
     dim strGIF
     dim strBMP
     dim strType
     strType = ""
     strImageType = "(unknown)"


     gfxSpex = False


     strPNG = chr(137) & chr(80) & chr(78)
     strGIF = "GIF"
     strBMP = chr(66) & chr(77)


     strType = GetBytes(flnm, 0, 3)


     if strType = strGIF then    ' is GIF


        strImageType = "GIF"
        Width = lngConvert(GetBytes(flnm, 7, 2))
        Height = lngConvert(GetBytes(flnm, 9, 2))
        Depth = 2 ^ ((asc(GetBytes(flnm, 11, 1)) and 7) + 1)
        gfxSpex = True


     elseif left(strType, 2) = strBMP then  ' is BMP


        strImageType = "BMP"
        Width = lngConvert(GetBytes(flnm, 19, 2))
        Height = lngConvert(GetBytes(flnm, 23, 2))
        Depth = 2 ^ (asc(GetBytes(flnm, 29, 1)))
        gfxSpex = True


     elseif strType = strPNG then   ' Is PNG


        strImageType = "PNG"
        Width = lngConvert2(GetBytes(flnm, 19, 2))
        Height = lngConvert2(GetBytes(flnm, 23, 2))
        Depth = getBytes(flnm, 25, 2)


        select case asc(right(Depth,1))
           case 0
              Depth = 2 ^ (asc(left(Depth, 1)))
              gfxSpex = True
           case 2
              Depth = 2 ^ (asc(left(Depth, 1)) * 3)
              gfxSpex = True
           case 3
              Depth = 2 ^ (asc(left(Depth, 1)))  '8
              gfxSpex = True
           case 4
              Depth = 2 ^ (asc(left(Depth, 1)) * 2)
              gfxSpex = True
           case 6
              Depth = 2 ^ (asc(left(Depth, 1)) * 4)
              gfxSpex = True
           case else
              Depth = -1
        end select



     else


        strBuff = GetBytes(flnm, 0, -1)  ' Get all bytes from file
        lngSize = len(strBuff)
        flgFound = 0


        strTarget = chr(255) & chr(216) & chr(255)
        flgFound = instr(strBuff, strTarget)


        if flgFound = 0 then
           exit function
        end if


        strImageType = "JPG"
        lngPos = flgFound + 2
        ExitLoop = false


        do while ExitLoop = False and lngPos < lngSize


           do while asc(mid(strBuff, lngPos, 1)) = 255 and lngPos < lngSize
              lngPos = lngPos + 1
           loop


           if asc(mid(strBuff, lngPos, 1)) < 192 or asc(mid(strBuff, lngPos, 1)) > 195 then
              lngMarkerSize = lngConvert2(mid(strBuff, lngPos + 1, 2))
              lngPos = lngPos + lngMarkerSize  + 1
           else
              ExitLoop = True
 &njsp;         end if


       loop
       '
       if ExitLoop = False then


          Width = -1
          Height = -1
          Depth = -1


       else


          Height = lngConvert2(mid(strBuff, lngPos + 4, 2))
          Width = lngConvert2(mid(strBuff, lngPos + 6, 2))
          Depth = 2 ^ (asc(mid(strBuff, lngPos + 8, 1)) * 8)
          gfxSpex = True


       end if
                  
     end if


  end function
%>



Esta matéria foi postada originalmente no ASP4Developers por Thiago Machado Souza (site), que na época era "Programador Desbravador, buscando quebrar todas as fronteiras além do horizonte da arte de programar !
www.thiagomachado.com.br". Hoje, vai saber...

sexta-feira, 19 de abril de 2002

0

Status do icq no ASP

Com essa dica você pode saber o status do icq de alguém (provavelmente você vai usar pra verificar seu próprio status) através do ASP. É preciso que você tenha ASPHTTP e que a visualização do seu status pela web esteja habilitada no icq.


<%
MeuUIN="41910114"
Set HTTPObj = Server.CreateObject("AspHTTP.Conn")
HTTPObj.Url = "http://web.icq.com/wwp/1,,,00.html?Uin=" & MeuUIN
HTTPObj.FollowRedirects = true
strurl=HTTPObj.GetURL
online = (inStr(lcase(strurl), "the user is currently offline")=0)
%>


Pronto, a variável online contém True se vc estiver online e False se não estiver.


Dá pra fazer a mesma coisa baixando aquelas imagenzinhas que o icq disponibiliza, mas o código é mais complicado e eu não vejo nenhum benefício.


Esta dica foi criada pelo meu irmão, Peka (peka_asp@yahoo.com.br)



Esta matéria foi postada originalmente no ASP4Developers por Elcio Luiz Ferreira (site), que na época era " analista-programador apaixonado por javascript, ex-professor, músico amador, ciclista amador, teólogo amador, filósofo amador, escritor amador e comediante amador.". Hoje, vai saber...

0

SQL Básico e Avançado

Muito fácil de aprender ou se quiser torna-lo como uma referencia prática é muito bom, comandos que pode ser usado para a maioria dos banco de dados.


para usuarios Básico e Intermediário


Listar, excluir, alterar, mesclar dados de uma tabela
Criar, excluir, modificar campos de uma tabela
Criar, excluir, modificar tabelas
Criar e Excluir Banco de Dados


Muito bom...


http://www.w3schools.com/sql/default.asp



Esta matéria foi postada originalmente no ASP4Developers por Thiago Machado Souza (site), que na época era "Programador Desbravador, buscando quebrar todas as fronteiras além do horizonte da arte de programar !
www.thiagomachado.com.br". Hoje, vai saber...

quinta-feira, 18 de abril de 2002

0

Visualização da estrutura das tabelas do BD

<% Option Explicit %>
<!--#include file="adovbs.inc"-->
<%
Dim oConexao, oTabela, oADOXDB, i
Dim oConn, oTableRs, oColumnRs
Dim sTabela, spConexao


'## Função que retorna o tipo da informção que compõe o campo ##
Function FieldType(sfpType,sfpLength,sfpPrecision)
Dim sfRetorno


   Select Case sfpType
       Case "2"
          sfRetorno = "smallint"
       Case "3"
          sfRetorno = "int"
       Case "4"
          sfRetorno = "real"
       Case "11"
          sfRetorno = "bit"
       Case "17"
          sfRetorno = "tinyint"
       Case "128"
          sfRetorno = "image"
       Case "129","130"
          if sfpLength = "2147483647" then
             sfRetorno = "text"
          else
             sfRetorno = "char/varchar"
          end if
       Case "5","131"
          if sfpPrecision > 0 then
            sfRetorno = "decimal"
          else
            sfRetorno = "numeric"
          end if
       Case "7","135"
          sfRetorno = "datetime"
       Case Else
          sfRetorno = "(indefinido)"
   End Select
   FieldType = sfRetorno


End Function


   '## Pega a tabela selecionada na URL ##
   sTabela = request.querystring("tabela")


   '## String de Conexao ##
   'spConexao = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=PATH+BANCO_DADOS.MDB"
   'spConexao = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&server.mappath("BANCO_DADOS.MDB")


   '## Conexao com o BD ##
   Set oADOXDB = Server.CreateObject("ADOX.Catalog")
   oADOXDB.ActiveConnection = spConexao
%>
<html>
<head>
<title>:::: Estrutura da(s) Tabela(s) ::::  por Myers</title>
<style type="text/css">
<!--
.tblTituloX {  border-top: double 1px #000000; border-left: double 1px #000000; border-right: double 1px #000000; font-family: verdana; font-weight: bold; font-size: 11px}
.tblTitulo0 {  border-top: solid 1px #000000; border-bottom: solid 1px #000000; border-left: solid 1px #000000; border-right: solid 1px #000000; font-family: verdana; font-weight: bold; font-size: 11px}
.tblTitulo1 {  border-top: solid 1px #000000; border-bottom: solid 1px #000000; border-right: solid 1px #000000; font-family: verdana; font-weight: bold; font-size: 11px}
.tblCelula0 {  border-bottom: solid 1px #E7E7E7; border-left: solid 1px #E7E7E7; border-right: solid 1px #E7E7E7; font-family: verdana; font-size: 11px}
.tblCelula1 {  border-bottom: solid 1px #E7E7E7; border-right: solid 1px #E7E7E7; font-family: verdana; font-size: 11px}
.lsvTblNor{color: #000000; background-color: #E7E7E7; font :  Verdana, Geneva, Arial, Helvetica, sans-serif; font-weight : bold; font-size: 8px}
.lsvTblSel{color: #000000; background-color: #CCCCCC; font :  Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 8px}
.lsvTblOut{ border : 1px solid; border-color: #000000;   font-size: 11px;}
-->
</style>
</head>


<body bgcolor="#FFFFFF">
<form method="post" action="<%= request.ServerVariables("SCRIPT_NAME") %>" name="frmListaTabelas">
  <blockquote>
  <select name="cmbTabelas" onChange="window.location='<%= request.ServerVariables("SCRIPT_NAME") %>?tabela='+this.value" class="lsvTblOut">
    <option value="0" class="lsvTblNor">:::: Selecione a tabela :::: </option>
    <% if sTabela = "showalltables" then %>
    <option value="showalltables" class="lsvTblSel" selected>- Todas -</option>
    <% else %>
    <option value="showalltables" class="lsvTblNor">- Todas -</option>
    <% end if %>
    <%
    '## Preenche o select com as tabelas do Banco de Dados ##
    for each oTabela in oADOXDB.Tables
       if oTabela.Type = "TABLE" then
          if LCase(oTabela.Name) = LCase(sTabela) then
             response.write "    <option value="""&oTabela.Name&""" class=""lsvTblSel"" selected>"&_
                            oTabela.Name&"</option>"&vbCRLF
          else
             response.write "    <option value="""&oTabela.Name&""" class=""lsvTblNor"">"&_
                            oTabela.Name&"</option>"&vbCRLF
          end if
       end if
    next
    %>
  </select>
  </blockquote>
  <br>
  <%
   if sTabela <> "" or not IsNull(sTabela) then
      if Lcase(sTabela) = Lcase("showalltables") then


     '## Exibicao TODAS as Tabelas ##
      Set oConn = Server.CreateObject("ADODB.Connection")
      oConn.ConnectionString = spConexao
      oConn.Open


      '## Retorna as tabelas do BD ##
      Set oTableRS = oConn.OpenSchema(adSchemaTables, _
                     Array(Empty, Empty, Empty, "TABLE"))


      do while not oTableRS.EOF
  %>
  <table border="0" cellspacing="0" cellpadding="2" width="90%" align="center">
    <tr bgcolor="#CCCCCC">
      <td colspan="7" align="center" class="tblTituloX"><%=oTableRS("Table_Name").Value%></td>
    </tr>
    <tr bgcolor="#E7E7E7">
      <td class="tblTitulo0" nowrap>CAMPO</td>
      <td class="tblTitulo1" nowrap>TIPO</td>
      <td class="tblTitulo1" nowrap>TAMANHO</td>
      <td class="tblTitulo1" nowrap>PRECIS&Atilde;O</td>
      <td class="tblTitulo1" nowrap>ESCALA</td>
      <td class="tblTitulo1" nowrap>PERMITIR NULO</td>
      <td class="tblTitulo1" nowrap>VALOR PADR&Atilde;O</td>
    </tr>
    <%
         '## Retorna as colunas de cada tabela (oTableRS("Table_Name").Value) ##
         Set oColumnRs = oConn.OpenSchema(adSchemaColumns, _
            Array(Empty, Empty, oTableRS("Table_Name").Value))
         do while not oColumnRs.EOF
    %>
    <tr>
      <td class="tblCelula0" nowrap><%=oColumnRs("Column_Name")%>&nbsp;</td>
      <td class="tblCelula1" nowrap><%response.write FieldType(oColumnRs("Data_Type"),_
           oColumnRs("Character_Maximum_Length"),oColumnRs("Numeric_Precision"))&_
           "("&oColumnRs("Data_Type")&")"%>
&nbsp;</td>
      <td class="tblCelula1" nowrap><%=oColumnRs("Character_Maximum_Length")%>&nbsp;</td>
      <td class="tblCelula1" nowrap><%=oColumnRs("Numeric_Precision")%>&nbsp;</td>
      <td class="tblCelula1" nowrap><%=oColumnRs("Numeric_Scale")%>&nbsp;</td>
      <td class="tblCelula1" align="center" nowrap>
      <% if oColumnRs("Is_Nullable") then %>
        <input type="checkbox" name="ckbNulo" checked>
      <% else %>
        <input type="checkbox" name="ckbNulo">
      <% end if %>
      </td>
      <td class="tblCelula1" nowrap><%=oColumnRs("Column_Default")%>&nbsp;</td>
       </tr>
     <%
         oColumnRs.MoveNext
         loop


     %>
      </table><p>
     <%
      Set oColumnRs = Nothing
      oTableRS.MoveNext
      loop



      oTableRS.Close
      Set oTableRS = nothing


      oConn.Close
      Set oConn = Nothing


  else
      '## Exibe tabelas separadas ##


      '## Abre a conexao
      Set oConn = Server.CreateObject("ADODB.Connection")
      oConn.ConnectionString = spConexao
      oConn.Open


      '## Retorna as Colunas da tabela selecionada (sTabela) ##
      Set oColumnRs = oConn.OpenSchema(adSchemaColumns, Array(Empty, Empty, sTabela))
      if not oColumnRs.EOF then
    %>
  <table border="0" cellspacing="0" cellpadding="2" width="90%" align="center">
    <tr bgcolor="#CCCCCC">
      <td colspan="7" align="center" class="tblTituloX"><%=sTabela%></td>
    </tr>
    <tr bgcolor="#E7E7E7">
      <td class="tblTitulo0" nowrap>CAMPO</td>
      <td class="tblTitulo1" nowrap>TIPO</td>
      <td class="tblTitulo1" nowrap>TAMANHO</td>
      <td class="tblTitulo1" nowrap>PRECIS&Atilde;O</td>
      <td class="tblTitulo1" nowrap>ESCALA</td>
      <td class="tblTitulo1" nowrap>PERMITIR NULO</td>
      <td class="tblTitulo1" nowrap>VALOR PADR&Atilde;O</td>
    </tr>
    <%
       do while not oColumnRs.EOF
    %>
    <tr>
      <td class="tblCelula0" nowrap><%=oColumnRs("Column_Name")%>&nbsp;</td>
      <td class="tblCelula1" nowrap><%response.write FieldType(oColumnRs("Data_Type"),_
           oColumnRs("Character_Maximum_Length"),oColumnRs("Numeric_Precision"))&_
           "("&oColumnRs("Data_Type")&")"%>
&nbsp;</td>
      <td class="tblCelula1" nowrap><%=oColumnRs("Character_Maximum_Length")%>&nbsp;</td>
      <td class="tblCelula1" nowrap><%=oColumnRs("Numeric_Precision")%>&nbsp;</td>
      <td class="tblCelula1" nowrap><%=oColumnRs("Numeric_Scale")%>&nbsp;</td>
      <td class="tblCelula1" align="center" nowrap>
      <% if oColumnRs("Is_Nullable") then %>
        <input type="checkbox" name="ckbNulo" checked>
      <% else %>
        <input type="checkbox" name="ckbNulo">
      <% end if %>
      </td>
      <td class="tblCelula1" nowrap><%=oColumnRs("Column_Default")%>&nbsp;</td>
    </tr>
  <%


       oColumnRs.MoveNext
       Loop


       oColumnRs.Close
       Set oColumnRs = Nothing


       oConn.Close
       Set oConn = Nothing
  %>
  </table>
  <%


     end if
    end if
   end if
%>
</form>
</body>
</html>



Esta matéria foi postada originalmente no ASP4Developers por Rafael "M4yers" Rossi (site), que na época era "...". Hoje, vai saber...

quarta-feira, 17 de abril de 2002

2

Removendo espaços iniciais, finais e duplicados em uma string

Uma das coisas que um programador VB sente falta quando vai trabalhar com Javascript é da função trim(), que remove os espaços iniciais e finais de uma string. O código abaixo implementa o método superTrim no objeto String do Javascript, que, além dos brancos iniciais e finais, remove tbém os espaços em branco duplicados dentro de uma string, mediante o uso de expressões regulares.


<script type="text/javascript">


String.prototype.superTrim = superTrim; //Implementa o método superTrim() no objeto String.
function superTrim(){ return( this.replace( /^\s+|\s+$/gi, "" ).replace( /\s{2,}/gi, " " ) ) }


//String com espaços a serem removidos
var strEspacos = " 123   456  78   9  "


document.write( "<xmp>" )
document.write( "[" + strEspacos + "] " + strEspacos.length + " espaços\n" ) // String original


strEspacos = strEspacos.superTrim();
document.write( "[" + strEspacos + "] " + strEspacos.length + " espaços\n" ) // String compactada
document.write( "</xmp>" )


</script>



Esta matéria foi postada originalmente no ASP4Developers por Rubens N. Farias (site), que na época era "pós-graduado em análise de sistemas orientados a objetos, MCP, MCSD, MCAD, MCSD.NET e consultor em TI, além de idealizador do projeto ASP4Developers. Desenvolve sistemas sob medida, focados na satisfação do usuário, com qualidade e custo realista.". Hoje, vai saber...

terça-feira, 16 de abril de 2002

0

Lendo QueryString no client

Esses dias um colega numa lista de discussão me perguntou se tem como ler em uma página os valores submetidos por um formulário em outra sem usar ASP, PHP ou qualquer outra linguagem de servidor. Eu pensei em uma porção de sugestões, com cookies por exemplo. Ele perguntou então se era possível ler Query Strings (aquele texto no endereço da página depois do ?). Então lá vai:


Pra começar, é importante saber que a Query String é gerada pelo browser quando o formulário é submetido com método GET. Você também pode digitar uma Query String diretamente na barra de endereços ou requisitá-la através de um link (isso não vai funcionar se o arquivo estiver em sua máquina, apenas se estiver num servidor web. Portanto, para testar na sua máquina, você vai ter que criar um formulário).


A Query String vem depois do endereço da página, no seguinte formato:



?primeiravariavel=dados&segundavariavel=dados&terceiravariavel=dados


Sendo que os dados estão codificados (se você usa ASP, pode codificar os dados com Server.URLEncode)


Vamos ao script, você coloca isso no começo das páginas:

<script>
qs=new Array()
variaveis=location.search.replace(/\x3F/,"").replace(/\x2B/g," ").split("&")
if(variaveis!=""){
for(i=
0;i<variaveis.length;i++){nvar=variaveis[i].split("=")
qs[nvar[0]]=unescape(nvar[1])
}
}
function QueryString(variavel){
return qs[variavel]
}
</script>

E, em qualquer lugar do documento, você pode ler um valor da Query String com:


 

nome=QueryString("nome")

E é só isso.




Quer dar uma olhadinha passo-a-passo? Olha aí:

<script>
/*
Cria um novo Array vazio:
*/
qs=new Array()

/*
A propriedade search do objeto location é o que vem depois do
"?" no endereço da página (incluindo o "?").
Esse primeiro replace(/\x3F/,"") elimina esse "?" inicial.
Um espaço em Query String é substituído por um sinal de mais (+).
Curiosamente, a função unescape não reverte o sinal em espaço.
Por isso esse segundo replace(/\x2B/g," "), que substitui os
sinais de mais por espaços.
E o último split separa cada variável da Query String num Array.
*/
variaveis=location.search.replace(/\x3F/,"").replace(/\x2B/g," ").split("&")

/*
Esse bloco varre o Array, separando (split("=")) o nome da
variável do valor. A função unescape descodifica o valor (pra
codificar use escape). Os valores vão pro Array qs.
*/
if(variaveis!=""){
for(i=0;i<variaveis.length;i++){
nvar=variaveis[i].split("=")
qs[nvar[0]]=unescape(nvar[1])
}
}

/*
Essa função é só umaponte pro Array qs.
Preferi deixar os resultados acessíveis por uma função por dois
motivos:
1. Os valores ficam acessíveis também por VBScript
2. É mais bonito de escrever
*/




function QueryString(variavel){
return qs[variavel]
}
</script>
Boa sorte!


Esta matéria foi postada originalmente no ASP4Developers por Elcio Luiz Ferreira (site), que na época era " analista-programador apaixonado por javascript, ex-professor, músico amador, ciclista amador, teólogo amador, filósofo amador, escritor amador e comediante amador.". Hoje, vai saber...

sexta-feira, 12 de abril de 2002

0

Extraindo endereços de e-mail do código HTML

Essa dica é inspirada na dica sobre tags HTML do Adriano Dias, onde postei um comentário.


Suponha que você tem um código HTML qualquer, ou outro bloco de texto, e quer listar todos os endereços de e-mail do texto, sem duplicação. Você pode fazer isso com essa função javascript:

function tiramail(texto){
resposta=""
texts=new Array()

//Tira quebras de linha e as {}
texto=texto.replace(/[\n\r\{}]/g,"")

//Cerca e-mails por {}
texto=texto.replace(/([\w\.-]*)@([\w\.-]*)/gi,"{{{$1@$2}}}")

//Tira os e-mails que começa ou terminam com @ ou não possuem ponto depois do @
texto=texto.replace(/\{\{\{@[^}]*}}}/g,"").replace(/\{\{\{[^}]*@[^}\.]*}}}/g,"")

//Limpa o começo e o final do texto
texto=texto.replace(/^[^\{]*/,"").replace(/[^}]*$/,"")

//Limpa os {{{}}}
texto=texto.replace(/^[^\{]*\{\{\{/,"").replace(/}}}[^}]*$/,"").replace(/}}}[^{]*\{\{\{/g,",")

//usa os endereços como índice de array para remover os duplicados
texto=texto.split(",")
for(i=0;i<texto.length;i++)
eval("texts[\""+texto[i].replace(/[@\.]/g,"")+"\"]=texto[i]")
for(i in texts)resposta+=texts[i]+","
return resposta.replace(/,$/,"")
}


Esta matéria foi postada originalmente no ASP4Developers por Elcio Luiz Ferreira (site), que na época era " analista-programador apaixonado por javascript, ex-professor, músico amador, ciclista amador, teólogo amador, filósofo amador, escritor amador e comediante amador.". Hoje, vai saber...