Ir para conteúdo

POWERED BY:

Arquivado

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

João Francisco

Usando ( ... ) no resultado de uma busca

Recommended Posts

Saudações a todos!!!

 

Alguém sabe como em uma busca eu retorno apenas o trecho do texto que contêm o termo da busca? Explicando: tenho um campo CONTEÚDO que sempre terá textos muito extensos, 30 linhas pra frente. Seu eu quiser encontrar a palvra CARRO apareceria mais ou menos assim:

 

MATÉRIAS 'Aqui um texto para identificar o local onde foi encontrado o termo buscado

Os melhores automóveis do ano 'Aqui o campo TITULO

... todo o que você gostaria de saber sobre os melhores CARROS, e até hoje... 'Aqui o campo CONTEUDO

 

Na busca que eu fiz, eu estava fazendo assim:

Response.Write(mid(RsEnt("conteudo"),1,175))

 

mas nem sempre o termo "CARRO" vai estar entre os 175 primeiros caracteres. Entendeu? :unsure:

 

Agradeço a ajuda!! Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Perdão, tinha entendido mal a pergunta.

 

 

mas vou tentar novamente:

 

if len(rs("campo")) > 100 thenresponse.write left(rs("campo"),100)  & "..."elseresponse.write left(rs("campo"),100)end if

foi!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala Meirelles!!!

Cara, esse código que você mandou pega apenas os 100 caracteres da esquerda, ou seja, os 100 primeiros do texto. Certo?! Rolava de pegar os 100 da esquerda e os 100 da direita, tendo como referência o local onde termo buscado está no texto. Melhorando: Se o termo "CARRO" está na posição 500 do texto, o código teria que pegar tudo que estivesse entre o caracter de posição 400 e 600 (100 < 500 > 100). Entendeu?

 

Agora.. como se faz isso?!

Mas valeu pela ajuda!!! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

João assim como o meireles falou tenta adicionar right pra pegar os da direita, + ou - assim:

 

if len(rs("campo")) > 100 then
response.write left(rs("campo"),100)  right(rs("campo"),100)& "..."
else
response.write left(rs("campo"),100)
end if

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ae galera, consegui fazer de um jeito que além de colocar os "..." antes e depois ele ainda retorna o resultado em maiúsculo e negrito. Segue abaixo:

StrCampo = RsEnt("conteudo") 'recebe o campo onde fará a buscaStrBusca = Request("id") 'recebe o termo de buscaMyPos = Instr(StrCampo, StrBusca) 'indica em qual posição no campo está o termoMyPos = MyPos - 50If MyPos < 0 Then 'se o termo estiver no início do campo ele não coloca os ... no começo   MyPos = 1   Response.Write(replace(mid(StrCampo,MyPos,175),StrBusca,"<b>" & ucase(StrBusca) & "</b>"))Else 'se o termo estiver no meio do campo ele volta 50 posições e coloca os ...   Response.Write("...")   Response.Write(replace(mid(StrCampo,MyPos,175),StrBusca,"<b>" & ucase(StrBusca) & "</b>"))End If					If Len(StrCampo) > 175 Then 'coloca os ... no final do resultado   Response.write("...</span>")End If

Só que tem um pequeno problema neste código. Se o termo de busca for a última palavra do campo, mesmo assim ele adiciona os ... no final do resultado

Se alguém tiver alguma idéia de como altera isso, fica aberto para comentarem.

=]

 

Valeus!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

ae.....tenta essa

<%'===='Finalidade: Localiza uma palavra ou frase dentro de uma string, resumindo e destacando o resultado com negrito'Por: Jonathan Cardozo'Email: cardozo81@gmail.com'===='==== Armazena na variavel a string que contem as palavras para procuratexto="Venda de apartamentos,casas e carros por um preço muito especial. Aproveite nossa promoção de inauguração. Veja fotos dos carros clicando aqui..."'===='==== Variavel que armazena o parametro da pesquisabusca="carros"'===='==== Determine um caracter ou sequencia de carateres separadores '(não utilize espaço, procure colocar uma string que dificilmente estaria sendo usada na pesquisa)separador="|=*"'===='==== Armazena em uma variavel a nova string colocando o separador para destacar o parametrotexto = replace(texto,busca,separador&busca&separador) '===='==== Separa o texto da variavel num array, definindo o separador do parametro como referenciaa=split(texto,separador)'===='==== Cria-se um contador para auxiliar e faz-se um FOR para percorrer o array'Durante o processo ele verifica se o valor do array é igual ao da pesquisa, se for chama a função de resumir'Logo após imprime o resultado adicionando os ... onde for necessárioi=0for each valor in aif valor=busca then  inicio=(a(i-1))  Response.Write(resumindoEsquerda(inicio,10))  Response.Write("<b>"&valor&"</b>")    fim=(a(i+1))  Response.Write(resumindoDireita(fim,10))  Response.Write("<br>")end ifi=i+1next '===='==== Função retirada do laboratório de scripts do forum iMasters, sofrendo uma pequena alteração para resumir a esquerdaFunction resumindoDireita(txt,vCrt)if Len(txt) <= vCrt then  response.write (left(txt,vCrt))  Response.End()else  while not ul=" " or vCrt=len(txt)   vExibe = left(txt,vCrt)   ul= right(vExibe,1)   vCrt=vCrt+1  wend  if vCrt=len(txt) then   Response.Write(txt)  else   vExibe=left(vExibe,(len(vExibe)-1))&"..."   Response.Write(vExibe)  end ifend ifend functionFunction resumindoEsquerda(txt,vCrt)if Len(txt) <= vCrt then  response.write (left(txt,vCrt))  Response.End()else  while not ul=" " or vCrt=len(txt)   vExibe = right(txt,vCrt)   ul= left(vExibe,1)   vCrt=vCrt+1  wend  if vCrt=len(txt) then   Response.Write(txt)  else   vExibe="..."&right(vExibe,(len(vExibe)-1))   Response.Write(vExibe)  end ifend ifend function'====%>

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.