SiLLeNt 0 Denunciar post Postado Maio 14, 2006 Viu pessoal, to com uma duvida aqui, to usando o VB express e quero transformar esse código aqui em php pra vb preg_match_all("/[0-9]*,[0-9]{4}/",$info,$quotes);$result["dolar_com"]=$quotes[0][1];$result["dolar_par"]=$quotes[0][3];$result["dolar_tur"]=$quotes[0][7];$result["euro"]=$quotes[0][9];return $result;} to quebrando a cabeça aqui, tentei fazer de outras maneiras usando Split, mas sei lá.. não consegi espero a ajuda de vcs ae Desde já valeu ae :) Compartilhar este post Link para o post Compartilhar em outros sites
Graymalkin 0 Denunciar post Postado Maio 14, 2006 O que tem em "info"? Uma string contendo números? Se sim, eles estão separados pelo quê? Espaço?Abraços,Graymalkin Compartilhar este post Link para o post Compartilhar em outros sites
SiLLeNt 0 Denunciar post Postado Maio 14, 2006 vo explica direitinho... o que eu tenho lá é uma string eu pego uma página via "objXML = CreateObject("Msxml2.XMLHTTP")" Quando ela vem eu quero trata os dados.. que vem todo em HTML eu queria pegar a cotação do dólar ae em php eu pegava as informações daquele jeito, agora eu queria transforma isso pra vb A variavel $info basicamente contém isso aqui: <HTML> <HEAD> <title>Moedas</title> <link href="http://www.investnews.com.br/includes/estilos.css" type="text/css" rel="stylesheet"> </HEAD> <body> <P><table id="Table1" cellspacing="0" cellpadding="2" border="0" style="width:100%;border-collapse:collapse;"> <tr style="height:20px;"> <td class="tabela_titulo" style="width:50%;">Moedas</td><td class="tabela_titulo" valign="Bottom" colspan="2" style="width:50%;"></td> </tr><tr class="bg_medio" style="border-color:#0CCCCC;border-width:1px;border-style:Solid;"> <td class="texto_moedas" style="width:80%;"> </td><td class="texto_moedas" style="width:40px;">Compra</td><td class="texto_moedas" style="width:40px;">Venda</td> </tr><tr> <td class="tabela_linha2 texto_moedas">US$ Com (12/05 17:43)</td><td class="tabela_linha2 texto_moedas"> 2,1410</td><td class="tabela_linha2 texto_moedas"> 2,1430</td> </tr><tr> <td class="tabela_linha1 texto_moedas">US$ Par (12/05 15:42)</td><td class="tabela_linha1 texto_moedas"> 2,2000</td><td class="tabela_linha1 texto_moedas"> 2,3000</td> </tr><tr> <td class="tabela_linha2 texto_moedas">US$ Ptax (12/05 00:00)</td><td class="tabela_linha2 texto_moedas"> 2,1299</td><td class="tabela_linha2 texto_moedas"> 2,1307</td> </tr><tr> <td class="tabela_linha1 texto_moedas">US$ Tur (12/05 16:35)</td><td class="tabela_linha1 texto_moedas"> 2,0650</td><td class="tabela_linha1 texto_moedas"> 2,2150</td> </tr><tr> <td class="tabela_linha2 texto_moedas">Euro (12/05 20:57)</td><td class="tabela_linha2 texto_moedas"> 2,7495</td><td class="tabela_linha2 texto_moedas"> 2,7512</td> </tr><tr> <td class="tabela_linha1 texto_moedas">Iene (12/05 16:40)</td><td class="tabela_linha1 texto_moedas"> 0,0195</td><td class="tabela_linha1 texto_moedas"> 0,0195</td> </tr><tr> <td class="tabela_linha2 texto_moedas">Peso Ar (12/05 16:40)</td><td class="tabela_linha2 texto_moedas"> 0,7009</td><td class="tabela_linha2 texto_moedas"> 0,7099</td> </tr></table> <table id="Table2" cellspacing="0" cellpadding="2" border="0" style="width:100%;border-collapse:collapse;"> <tr class="tabela_rodape"> <td> Fonte: InvestNews (R$)</td> </tr></table> </P> </body></HTML> Eu quero pega somente os dados que tem a cotação do dólar... Já tentei faze um monte de coisa aqui mas nao ta dando certo :((( Compartilhar este post Link para o post Compartilhar em outros sites
SiLLeNt 0 Denunciar post Postado Maio 14, 2006 na boa... consegui arruma aqui a função só que só ta retornando um resultado e nao ta vindo todos veja a função: Private Sub processaDados(ByVal arqHtml As String) Dim r As New Regex("[0-9]*,[0-9]{4}", RegexOptions.ExplicitCapture And RegexOptions.Multiline And RegexOptions.Compiled And RegexOptions.IgnoreCase) Dim resultado resultado = r.Match(arqHtml).Groups.Count txtDebug.Text = resultado End Sub o valor do resultado sempre ta sendo 1.... como eu faço pra percorrer todos os resultados ?? Compartilhar este post Link para o post Compartilhar em outros sites
Graymalkin 0 Denunciar post Postado Maio 14, 2006 Já que é HTML você pode fazer isso com o WebBrowser (inclusive acredito que você poderia até mesmo baixar a página por ele): Dim b As New WebBrowser() Dim valor As Decimal b.DocumentText = HTMLDAPÁGINA b.Refresh() Do While Not b.ReadyState = WebBrowserReadyState.Complete Application.DoEvents() Loop For Each it As HtmlElement In b.Document.All If it.TagName = "TD" Then Debug.WriteLine(it.OuterText) Try valor = Decimal.Parse(it.OuterText) MessageBox.Show(valor.ToString()) Catch ex As Exception 'nada End Try End If Next it Apenas substitua o HTMLDAPÁGINA pelo nome da sua string que contém o código da página. Certo? ;) Graymalkin Compartilhar este post Link para o post Compartilhar em outros sites
SiLLeNt 0 Denunciar post Postado Maio 14, 2006 ok .;..vou testar aqui pra ver se eu consigo Compartilhar este post Link para o post Compartilhar em outros sites
SiLLeNt 0 Denunciar post Postado Maio 15, 2006 me compliquei mais tentando faze desse jeito.. eu nao manj desse objeto ahuiahuauia mas tipo... com aquele jeito ali eu acho que consegui... só que eu so to conseguindo pegar um valor... Eu testei a ER num programinha aqui... e ela ta retornando todos os dados certinho mas quando eu mando ela pro VB ela só traz um resultado.. talvez eu nao esteja conseguindo navegar pelos resultados mas Um valor eu consigo ver.. os outros nao aparecem... :( Olhem o código: Private Sub processaDados(ByVal arqHtml As String) Dim r As New Regex("[0-9]*,[0-9]{4}", RegexOptions.ExplicitCapture And RegexOptions.Multiline And RegexOptions.Compiled And RegexOptions.IgnoreCase) Dim resultado resultado = r.Match(arqHtml).Groups.Count txtDebug.Text = resultado End Sub o valor de resultado é 1 ... sempre... deveria vir 14 se eu nao me engano.. Deem uma força pra eu ae ... desde ja agradeço... Compartilhar este post Link para o post Compartilhar em outros sites
Graymalkin 0 Denunciar post Postado Maio 16, 2006 Sim, o seu erro é que você está utilizando Match, que retorna apenas a primeira ocorrência. Você deveria utilizar Matches (note o plural) para retornar todas as ocorrências. Veja o código abaixo que funcionou aqui comigo: Dim r As New Regex("[0-9]*,[0-9]{4}", RegexOptions.ExplicitCapture And RegexOptions.Multiline And RegexOptions.Compiled And RegexOptions.IgnoreCase) Dim valores As MatchCollection valores = r.Matches(arqHtml) For Each valor As Match In valores Debug.WriteLine(valor.Value) Next Certo? ;) Graymalkin Compartilhar este post Link para o post Compartilhar em outros sites
SiLLeNt 0 Denunciar post Postado Maio 16, 2006 \o////////////háá \ovaleu cara.. Muito obrigado mesmo... deu certinho o/// Compartilhar este post Link para o post Compartilhar em outros sites