Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Patrique

[Resolvido] probleminha com replace

Recommended Posts

fala ae pessoal tudo tranquilo estou aqui com um probleminha ao tentar utilizar replace, estou com o seguinte code

 

<%
Response.Buffer = True

mensagem = ""& time() &" mensagemaa para postar no twitter, meu nome éaa teste patrique http://www.terra.com.br"

Function tratamensagem(str)

		Dim regEx, retVal
		Set regEx = New RegExp
		regEx.IgnoreCase = True
		regEx.Global = True

		regEx.Pattern = "(http://[A-Za-z0-9\.\/=\?%\-&_~`@']+)$"
		str = regEx.Replace(str, "<url>$1<url>")

		Set regEx = Nothing

	tratamensagem = str
	
End Function


Function pegaurl(Text)
	Set objReg = New RegEXP
	   objReg.Global = True
	   objReg.IgnoreCase = True
	   objReg.Pattern = "\<url>\s*(.+?)\<url>"
	Set Pegada = objReg.Execute(Text)

	For Each x In Pegada
		Resultado = Resultado & Replace(x,"<url>" ,"")& "" & vbCrlf
	Next

	pegaurl = Resultado
End Function

Verifica = tratamensagem(mensagem)


codificada = pegaurl(Verifica)

Set objXMLHTTP = CreateObject("Msxml2.XMLHTTP")
	Url = "http://u.mavrev.com/api.php?url="& codificada &""
	objXMLHTTP.Open "GET", URL, FALSE
	objXMLHTTP.send()
	conteudo = objXMLHTTP.responseText
set objXMLHTTP = nothing


Dim twitter
Set twitter = Server.CreateObject("Microsoft.XMLHTTP")

	twitter_usuario  = "nomeusuario"
	twitter_senha	= "senha"

	mensagemnova = mensagem

	mensagemnova = Replace(mensagemnova,"<url>","")
	mensagemnova = Replace(mensagemnova,codificada,conteudo)
	
	twitter.Open "POST", "http://" & twitter_usuario & ":" & twitter_senha & "@twitter.com/statuses/update.xml?status=" & server.URLencode(mensagemnova), False
	twitter.setRequestHeader "Content-Type", "content=text/html; charset=iso-8859-1"
	twitter.Send

Set twitter = Nothing
%>

Deixa agora eu explicar o que estou tentando fazer, todos sabem que o twitter tem um limite para caracteres e dependendo do tamanho da url a ser postada na mensagem ela pode comprometer pois consequentemente por causa disse terei que diminuir a tamanho da mensagem.

 

Este script serve para mandar uma mensagem automaticamente para o twitter, estou utilizando ele para enviar ao canal do twitter do meu site, este script sempre quando houver atualização no site ele ira cadastrar automaticamente as informações lá no twitter sem a necessidade deu ter que ir lá para cadastrar.

 

Mais como a url do meu site é um pouco gigante eu irei utilizar redutores de url, neste caso eu vou utilizar o webservice do mavrev

 

O uso desta api é simples basta fazer assim para ele retornar uma url reduzida

 

http://u.mavrev.com/api.php?url=http://forum.uol.imasters.com.br/index.php?index=online

desta maneira o sistema me retorna uma url assim

 

http://u.mavrev.com/cfkx

 

dae eu utilizo o asp para montar os parametros da mensagem para enviar ao twiter

 

mensagem = ""& time() &" mensagemaa para postar no twitter, meu nome éaa teste patrique http://www.terra.com.br"

faço o sistema identificar a url que esta contida na mensagem e mando colocar as tags <url> antes e depois deste link

 

Function tratamensagem(str)

		Dim regEx, retVal
		Set regEx = New RegExp
		regEx.IgnoreCase = True
		regEx.Global = True

		regEx.Pattern = "(http://[A-Za-z0-9\.\/=\?%\-&_~`@']+)$"
		str = regEx.Replace(str, "<url>$1<url>")

		Set regEx = Nothing

	tratamensagem = str
	
End Function

depois utilizou uma outra função para pegar a url que no caso esta dentro das tags <url>

 

Function pegaurl(Text)
	Set objReg = New RegEXP
	   objReg.Global = True
	   objReg.IgnoreCase = True
	   objReg.Pattern = "\<url>\s*(.+?)\<url>"
	Set Pegada = objReg.Execute(Text)

	For Each x In Pegada
		Resultado = Resultado & Replace(x,"<url>" ,"")& "" & vbCrlf
	Next

	pegaurl = Resultado
End Function

feito isso o sistema sabe se tem ou não a url, caso tenha ele estara com a url na variavel

 

Verifica = tratamensagem(mensagem)
codificada = pegaurl(Verifica)

sabendo da url eu monto uma outra função para gerar uma url pelo webservice

 

Set objXMLHTTP = CreateObject("Msxml2.XMLHTTP")
	Url = "http://u.mavrev.com/api.php?url="& codificada &""
	objXMLHTTP.Open "GET", URL, FALSE
	objXMLHTTP.send()
	conteudo = objXMLHTTP.responseText
set objXMLHTTP = nothing

com isso a url gerada esta dentro da variavel "conteudo" dai eu uso o replace para trocar as urls, no caso eu chamo novamente a mensagem e dou o replace entre a url original e a url gerada pelo webservice, também através do replace mando retirar as tags <url> que estão na mensagem

 

mensagemnova = mensagem

mensagemnova = Replace(mensagemnova,"<url>","")
mensagemnova = Replace(mensagemnova,codificada,conteudo)

o sistema esta fazendo quase tudo correntamente, ele so não esta conseguindo trocar as urls....

 

no caso estou fazendo o replace assim

 

mensagemnova = Replace(mensagemnova,codificada,conteudo)

o que pode esta acontecendo, já testei tudo com response.write e é retornado tudo certo... so que me parece que o replace feito desta maneira não funfa... reparem que tem o replace para retirar a tag <url> e ela esta sendo tirada, mais o link não é trocado.

 

Como eu posso solucionar isso, alguém tem alguma idéia do que pode esta acontecendo?

 

desde já agradeço,

Patrique

Compartilhar este post


Link para o post
Compartilhar em outros sites

Disponibiliza o conteúdo de cada variável (mensagemnova [somente a primeira], codificada, conteudo) para testarmos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

então hargon, no caso é assim

 

mensagemnova = "11:10:54 mensagemaa para postar no twitter, meu nome éaa teste patrique http://www.terra.com.br"

codificada = "http://www.terra.com.br"

conteudo = "http://u.mavrev.com/cfkx"

 

no caso seria dar o replace trocando o http://www.terra.com.br por http://u.mavrev.com/cfkx

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

não funciona significa o que? troca algo ou nem ta alterando nada?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tipo mário, quando eu utilizo este replace aqui

 

mensagemnova = Replace(mensagemnova,codificada,conteudo)

não funfa, mais eu dei response.write para ver se os dados estavam corretos e esta tipo

 

mensagemnova = "11:10:54 mensagemaa para postar no twitter, meu nome éaa teste patrique http://www.terra.com.br"
codificada = "http://www.terra.com.br"
conteudo = "http://u.mavrev.com/cfkx"

os dados estão assim, consequentemente eu mando o replace trocar na mensagemnova a url que no caso é a codificada pela conteúdo.

 

Mais não vai... eu fiz o teste manualmente assim...

 

mensagemnova = Replace(mensagemnova,"http://www.terra.com.br","http://u.mavrev.com/cfkx")

e funfou é isto que eu não estou entendendo, muito doido isto, já pensei que eu havia feito alguma coisa errada, mais com estes responses.write me mostrou que tudo estava certinho, somente este replace desta forma, trazendo sempre váriaves sem conteúdo direto da esse erro.

 

mais seguirei tentando aqui se eu conseguir algo eu posto aqui.

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

testei e funcionou perfeitamente

Compartilhar este post


Link para o post
Compartilhar em outros sites

não

 

testei so o replace

Compartilhar este post


Link para o post
Compartilhar em outros sites

a sim, mais é isso que eu não to entendendo, acredito que este problema ocorre porque os dados no replace vem de uma function, so pode ser isso.

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Após o último replace dê um response.write em mensagemnova . Veja se está correto o conteúdo. Se estiver, o problema pode ser na hora de enviar, e não com o replace.

Compartilhar este post


Link para o post
Compartilhar em outros sites

o problema deve se na hora do twitter mesmo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não é no twitter não, já havia feito o teste no twitter, antes do replace eu verifiquei, e esta tudo normal, so que na hora do replace o variavel "codificada" não esta dando certo, muito estranho isto, eu fiz assim olha

 

mensagemnova = mensagem

mensagemnova = Replace(mensagemnova,"<url>","")
mensagemnova = Replace(mensagemnova,codificada,conteudo)

Response.Write mensagemnova
Response.write("<br><br>")
Response.Write codificada
Response.write("<br><br>")
Response.Write conteudo

 

Dae me retorna isso

 

02:36:33 mensagemaa para postar no twitter, meu nome éaa teste patrique http://www.google.com.br

 

http://www.google.com.br

 

http://u.mavrev.com/c7e4

as variaveis estão corretas, tanto no "codificada" quanto a "conteudo"... eu fizer o replace criando uma variavel sem ter vindo de uma função e deu certo, eu fiz assim... criei uma nova variavel chamada "teste" e nela coloquei a url "http://www.google.com.br" dai substitui lá no replace a variavel "codificada" por esta chamada "teste" e funfou belezinha.

 

O problema é com esta váriavel chamada codificada, o processo dela é feito por functions e é neste ponto que eu acho que o replace não funciona agora eu não sei por que.

 

Mais ta tranquilo isto era apenas para uns testes mesmo não estou precisando, so tava querendo aprimorar o script mais muito obrigado pela atenção ae galera, se eu encontrar um jeito de concertar isso eu posto aqui.

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, estou cansado de quebrar a cara com problemas cretinos....

 

Tente coisas inimaginaveis e babacas, tipo, coloque uns trim, cheque o Len, ve se tah tentando substituir exatamente o que deveria ser substituido !

 

Tem umas coisas que quando a gente percebe o nosso erro, dá até raiva.

 

Ve se nao tah sobrando uns espaços, se a string é exatamente identica, faz uns if's pra testar, literalmente INVENTA onde poderia estar o problema !

 

Aparentemente, o código está 100% correto !

 

Abraços !

Compartilhar este post


Link para o post
Compartilhar em outros sites

huahuauhauhauhauh é verdade cara, as vezes os erros são tão bobos que chega até ser engraçado, neste caso eu já testei de tudo, mais acredito que ñão da o replace devido a variavel "codificada" ser proveniente de functions, eu fiz vários teste, verifiquei espaços, verifiquei palavras e cheguei a está solução.

 

Mais como eu disse eu continuarei aqui fazendo os testes, se conseguir eu posto aqui!

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já entendi. Realmente não vai funcionar já que está usando functions.

 

Você tem que usar

Function nomeFuncao(ByVal parametro)

Ou então...

 

Function nomeFuncao(parametro1)
Dim parametro
parametro = parametro1

Faça o teste posta o resultado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

E ai Hargon, testei aqui das 2 maneiras isoladamente e as duas maneiras juntas, testei também de forma invertida em uma sim outra não e também não funfou.

 

Obrigado pela atenção

Compartilhar este post


Link para o post
Compartilhar em outros sites

Poste todas as funções utilizadas e a linha em que você chama a primeira.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Function tratamensagem(str)

		Dim regEx, retVal
		Set regEx = New RegExp
		regEx.IgnoreCase = True
		regEx.Global = True

		regEx.Pattern = "(http://[A-Za-z0-9\.\/=\?%\-&_~`@']+)$"
		str = regEx.Replace(str, "<url>$1<url>")

		Set regEx = Nothing

	tratamensagem = str
	
End Function

Function pegaurl(Text)
	Set objReg = New RegEXP
	   objReg.Global = True
	   objReg.IgnoreCase = True
	   objReg.Pattern = "\<url>\s*(.+?)\<url>"
	Set Pegada = objReg.Execute(Text)

	For Each x In Pegada
		Resultado = Resultado & Replace(x,"<url>" ,"")& "" & vbCrlf
	Next

	pegaurl = Resultado
End Function

elas são chamadas assim

 

Verifica = tratamensagem(mensagem)
codificada = pegaurl(Verifica)

É assim que esta sendo chamado hargon

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Posta com exemplos, de forma que possamos simular a mesma tentativa que você está fazendo aí. Ex.

<%
Function tratamensagem(str)

		Dim regEx, retVal
		Set regEx = New RegExp
		regEx.IgnoreCase = True
		regEx.Global = True

		regEx.Pattern = "(http://[A-Za-z0-9\.\/=\?%\-&_~`@']+)$"
		str = regEx.Replace(str, "<url>$1<url>")

		Set regEx = Nothing

	tratamensagem = str
	
End Function

Function pegaurl(Text)
	Set objReg = New RegEXP
	   objReg.Global = True
	   objReg.IgnoreCase = True
	   objReg.Pattern = "\<url>\s*(.+?)\<url>"
	Set Pegada = objReg.Execute(Text)

	For Each x In Pegada
		Resultado = Resultado & Replace(x,"<url>" ,"")& "" & vbCrlf
	Next

	pegaurl = Resultado
End Function

mensagemnova = "11:10:54 mensagemaa para postar no twitter, meu nome éaa teste patrique http://www.terra.com.br"
conteudo = "http://u.mavrev.com/cfkx"

Verifica = tratamensagem(mensagemnova)
codificada = pegaurl(Verifica)

mensagemnova = Replace(mensagemnova,codificada,conteudo)

Response.Write mensagemnova & "<br />"
Response.Write codificada & "<br />"
%>
Seria dessa forma? Se não for, corrija o que está diferente e acrescente o que está errado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu estou fazendo assim Hargon, vou postar o code atual completo

 

<%
Response.Buffer = True

mensagem = ""& time() &" mensagemaa para postar no twitter, meu nome éaa teste patrique http://www.google.com.br"

Function tratamensagem(ByVal str)

		Dim regEx, retVal
		Set regEx = New RegExp
		regEx.IgnoreCase = True
		regEx.Global = True

		regEx.Pattern = "(http://[A-Za-z0-9\.\/=\?%\-&_~`@']+)$"
		str = regEx.Replace(str, "<url>$1<url>")

		Set regEx = Nothing

	tratamensagem = str

End Function


Function pegaurl(ByVal Text)
	Set objReg = New RegEXP
	   objReg.Global = True
	   objReg.IgnoreCase = True
	   objReg.Pattern = "\<url>\s*(.+?)\<url>"
	Set Pegada = objReg.Execute(Text)

	For Each x In Pegada
		Resultado = Resultado & Replace(x,"<url>","")& "" & vbCrlf
	Next

	pegaurl = Resultado
End Function

codificada = pegaurl(tratamensagem(mensagem))


Set objXMLHTTP = CreateObject("Msxml2.XMLHTTP")
	Url = "http://u.mavrev.com/api.php?url="& codificada &""
	objXMLHTTP.Open "GET", URL, FALSE
	objXMLHTTP.send()
	conteudo = objXMLHTTP.responseText
set objXMLHTTP = nothing


Dim twitter
Set twitter = Server.CreateObject("Microsoft.XMLHTTP")

	twitter_usuario  = "nomeusuario"
	twitter_senha	= "senha"

	mensagemnova = mensagem

	mensagemnova = Replace(mensagemnova,"<url>","")
	mensagemnova = Replace(mensagemnova,codificada,conteudo)

	Response.Write mensagemnova
	Response.write("<br><br>")
	Response.Write codificada
	Response.write("<br><br>")
	Response.Write conteudo

	twitter.Open "POST", "http://" & twitter_usuario & ":" & twitter_senha & "@twitter.com/statuses/update.xml?status=" & server.URLencode(mensagemnova), False
	twitter.setRequestHeader "Content-Type", "content=text/html; charset=iso-8859-1"
	twitter.Send

Set twitter = Nothing
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.