Ir para conteúdo

POWERED BY:

Arquivado

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

notax

Function + mid

Recommended Posts

Pessol, bom dia!

 

To com um probleminha aqui... tenho uma function que faz uma serie de replaces... como o exemplo abaixo:

 

Function formatar(texto)
 texto = Server.HTMLEncode(texto) 
 
 texto = replace(texto,"[2]", "<h2>")
 texto = replace(texto,"[/2]", "</h2>")

 formatar=texto
 end function
 %>

Acontece que eu preciso tb usar um mid no resultado desses textos, para apresentar tipo os primeiros 100 caracteres com o leia mais na sequencia... e aqui podem acontecer problemas... pq pode pegar o texto apenas até o [2 leia mais... por exeplo...

 

a consequencia é que não fecha a tag... e daí da umas lamnças aqui no meu codigo... sacaram?

 

 

Alguem tem alguma ideia de como resolvo isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa! Pois é... pensei nisso tb... mas não dá pq o replace tb nao funcionaria em alguns casos e o texto ficaria estranho como por exemplo:

 

 

...bla bla bla [2... leia mais...

 

saca?

 

será que nao tem jeito?

Compartilhar este post


Link para o post
Compartilhar em outros sites

você ker tipo, em um texto por exemplo:

 

A Fundação Getulio Vargas é a primeira instituição brasileira a ser membro do OCWC (Open Course Ware Consortium), o consórcio de instituições de ensino de diversos países que oferecem conteúdos e materiais didáticos de graça pela internet.Para ter acesso aos cursos oferecidos, clique aqui. Mais informações podem ser encontradas no FAQ do FGV Online.[2 leia mais...

para isso existe um afuncaun no lab. de script, onde você pode exibir determinada quantidade de caracteres e depois exibir, no casso essa funcao exibe ... 3 pontinhos, você pode alterá-las para mostrar o leia mais

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não é isso não...

 

Eu ja tenho a function pronta e ela funciona perfeita...

 

O problema é que quando quero exibir apenas 200 caracteres por exemplo... dai uso um mid... perfeito...

 

Só que imagina só... meu editor inclui o texto no bd com tags tipo bbcode e depois minha function da os devidos replaces nesses bbcodes os transformando em tags html...

 

Bem... dai imagina que as tags [2] texto [/2] serão substituidas por <2> texto </2>...

 

Barbada né? Só que se o mid cortar o texto exatamente no x... por exemplo: [2] tex o que vai acontecer é que meu codigo hatml ficará assim <2> tex... ou seja, a tag <2> não vai ser fechada pq o mid interromperá o texto no meio...

 

è isso que preciso evitar... preciso de uma regra ou algo do tipo para nunca deixar o mid encerrar o texto antes de encerrar a tag... sacou?

Compartilhar este post


Link para o post
Compartilhar em outros sites

e se você usar o mesmo sistema do forum para tags´s HTML e demais BBCode

e como você ker exibir tipo os primeiros 100 char, você pode fazer uma function

para analisar se antes de dar o MID, verifcar se tem mais tag HTML e nao cortar no meio...

Compartilhar este post


Link para o post
Compartilhar em outros sites

a mais simples: faz o replace pra tornar as tags [2] e [/2] para

e

depois aplique a função:

Function limparHtml(strHtml) Dim objER strHtml = replaceBr(strHtml) Set objER = New RegExp objER.IgnoreCase = True objER.Global = True objER.Pattern = "]*>" strHtml = objER.Replace(strHtml, "") Set objER = Nothing limparHtml = strHtml End Function
com esta função você remove todas as tags html de uma string A forma mais complicada seria cortar a string, voltar até o ultimo espaço e a partir dai procurar onte é o proximo [/ usando o InStrRev do asp. Quando encontrasse a posicao, verificaria se tem algum caracte [ após o último [/, se existisse, limparia o lixo da string após o ultimo [/ Mas acho que é muita mão fazer isso, se não tiver problemas, use a primeira ideia.Simples, funcional e não vai te dar dor de cabeça caso inventem uma nova tag a ser substituida

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valew pelo retonro pessoal...

 

Xamburzun, não posso/ não quero usar editores prontos... por isso fiz o meu próprio...

 

Jonathan, não entendi muito bem sua proposta... isso e expressões regulares? O que essa function fará na prática?

 

Se entendi bem ela vai tirar as tags bbcode e manter o texto sem formatação é isso?

 

Então se eu tiver no bd algo como: [bold]teste[/bold] na exibição prévia aparecerá apenas "teste" sem ser em negrito é isso?

 

Valew a força...

Compartilhar este post


Link para o post
Compartilhar em outros sites

o melhor seria e se você usar o mesmo sistema do forum para tags´s HTML/BBCode

e depois nates de dar um SPLIT no texto verfificar se tem um [, como citei acima e como o jonathan disse,

existem funcoes para manipular string k vai te ajudar , pelo mesno ter uma lógica da ideia...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Jonathan, bom dia e obrigado pelo retorno...

 

Ainda não entendi muito bem sua proposta, mas até pra conseguir entende-la melhor fui colocar o codigo na prática pra ver o que acontecia, mas deu um erro que segue abaixo, será que pode me dar mais uma forcinha?

 

Código:

 

<%Function limparHtml(strHtml) 
Dim objER 
strHtml = replaceBr(strHtml) 
Set objER = New RegExp 
objER.IgnoreCase = True 
objER.Global = True objER.Pattern = "]*>" strHtml = objER.Replace(strHtml, "") 
Set objER = Nothing 
limparHtml = strHtml 
End Function 
%>

erro:

Microsoft VBScript compilation error '800a0401'

Expected end of statement

/index_teste.asp, line 45

objER.Global = True objER.Pattern = "]*>" strHtml = objER.Replace(strHtml, "")

--------------------^

 

linha 45 = objER.Global = True objER.Pattern = "]*>" strHtml = objER.Replace(strHtml, "")

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Certifique-se de não criar uma string assim:

 

String = "" teste "

 

Certifique-se de não misturar sintaxe JavaScript VBScript em uma página

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uhm... não... está assim:

 

texto = Server.HTMLEncode(ObjRs2("texto")) 
texto = limparHtml(texto)
texto = Mid(texto, 1, 50)
response.write texto & "<br>"%>

Está correto?

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha este exemplo:

<%
Function RemoveHTMLTags(ByVal strHTML)
    Dim objER
    Dim strTexto

    'Configurando o objeto de Expressão Regular
    Set objER            = New RegExp 
    objER.IgnoreCase    = True
    objER.Global        = True
    objER.Pattern        = "<[^>]*>"
    
    'Substituindo as tags encontradas pela expressão
    strTexto            = strHTML
    strTexto            = objER.Replace(strTexto, "")
    
    Set objER            = Nothing

    'Retornando a função
    RemoveHTMLTags = strTexto
End Function

'chamando a função
'-----------------------------------------------------
Dim HTML
HTML = "<font face='verdana' size='2'>teste</font> da função de retira as <b>TAGS</b> <font color='red'>HTML</font><br>"
'Texto com TAG
Response.Write HTML
'Texto sem TAG
Response.Write RemoveHTMLTags(HTML)
%

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.