Foros del Web » Programando para Internet » ASP Clásico »

Palabras contenidas dentro de otras palabras

Estas en el tema de Palabras contenidas dentro de otras palabras en el foro de ASP Clásico en Foros del Web. Hola! Tengo hecho un glosario/faq. Cada uno de los terminos esta almacenado en una tabla de una Db de Access Aparte hay un texto también ...
  #1 (permalink)  
Antiguo 11/11/2007, 19:36
 
Fecha de Ingreso: enero-2003
Mensajes: 45
Antigüedad: 22 años, 3 meses
Puntos: 0
Palabras contenidas dentro de otras palabras

Hola!

Tengo hecho un glosario/faq.
Cada uno de los terminos esta almacenado en una tabla de una Db de Access

Aparte hay un texto también almacenado en un tabla.

La idea es que si algun termino del glosario aparece en el texto sea reemplazado por un enlace.
Hasta ahi voy bien.

El problema que tengo es el siguiente:


Tengo (por ejemplo) las siguientes palabras en la tabla "tablafaq"
- hora
- ahora

Cuando la consulta a la "tablafaq", si en en el do while aparece primero la palabra "hora" reemplazará también el texto "hora" contenido en la palabra "ahora", y ya no podrá hacer el replace para resaltar el termino "ahora"

Existe alguna forma de arreglar ese problema?
Estuve buscando funciones y procedimientos que me ayudarán pero no he encontrado ninguno.

Espero que se haya entendido

Abajo les dejo el codigo

Saludos y gracias de antemano




Código:
<%
sql = "select * from tabla"
set rs = db.execute(sql)
Texto = rs("contenido") 
Texto = Replace(Texto, CHR(13), "<br />")
sqlf = "select * from tablafaq"
set rsf = db.execute(sqlf)
do while not rsf.eof
		
Texto = Replace(Texto, rsf("term"), "<a title=""" & rsf("titulo") & """ href=""faq.asp?term=" & rsf("term") & """ class=""term"" onclick=""NewWindow(this.href,'name','700','500','yes');return false;"">" & rsf("term") & "</a>")

rsf.movenext
loop
%>
  #2 (permalink)  
Antiguo 12/11/2007, 14:28
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
Re: Palabras contenidas dentro de otras palabras

No creo que con un simple Replace al texto campo puedas resolver lo que ocupas. Necesitas una rutina que lea el texo y por cada palabra (aquello que empieza o termina con espacio, signo de puntuación o inicio o fin de linea) bascarla en tu tabla de faq's y remplazar ahora si, la palabra, no solo el conjunto de caracteres que puede o no ser una palabra.
  #3 (permalink)  
Antiguo 12/11/2007, 14:44
 
Fecha de Ingreso: enero-2003
Mensajes: 45
Antigüedad: 22 años, 3 meses
Puntos: 0
Re: Palabras contenidas dentro de otras palabras

Gracias por responder Myakire.
Pero justamente éso que dices es lo que estoy buscando.
Es lo que intenté pedir en mi mensaje

Yo tampoco creo que lo pueda solucionar con un liso y llano replace.
Asi como está el código, que lo hice para empezar, probar y ver, por supuesto que no me sirve y no me soluciona nada.

Ya encontraré algo.

Gracias de nuevo

Bruno

Última edición por _br1_; 12/11/2007 a las 14:57
  #4 (permalink)  
Antiguo 13/11/2007, 08:53
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
Re: Palabras contenidas dentro de otras palabras

Cita:
Ya encontraré algo.
Supongo ya no necesitas un código ¿o todavía si?, si ya encontraste algo es bueno poner como lo resolviste por si algún otro usuario con tu mismo problema encuentra tu post.

Saludos
  #5 (permalink)  
Antiguo 13/11/2007, 09:26
 
Fecha de Ingreso: enero-2003
Mensajes: 45
Antigüedad: 22 años, 3 meses
Puntos: 0
Re: Palabras contenidas dentro de otras palabras

No, todavía no soluciono ni encuentro nada, pero estoy tratando de usar algunas funciones para hacer lo que necesito.

Cuando pueda solucionarlo lo publico.
Mientras tanto, si alguien tiene alguna idea...es bienvenida.

Saludos y gracias de nuevo.
  #6 (permalink)  
Antiguo 13/11/2007, 14:14
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 18 años, 1 mes
Puntos: 88
Re: Palabras contenidas dentro de otras palabras

a lo mejor esto te puede servir.....
Código PHP:
    ' texto al que se le buscaran las palabras
    texto=request.Form("criterio")
     '
criterio de busqueda
    texto2
=request.Form("criterio2")
    
'valor en sustitucion
    modtxt2=replace(texto2,texto2,"<strong>"&texto2&"</strong>")
    '
limpiamos la cadena
    modificado
=replace(texto,","," ")
    
modificado=replace(modificado,"."," ")
    
modificado=replace(modificado,";"," ")
    
modificado=replace(modificado,"-"," ")
    
modificado=replace(modificado,"--"," ")
    
modificado=replace(modificado,"?"," ")
    
modificado=replace(modificado,"¿"," ")
    
modificado=replace(modificado,"¡"," ")
    
modificado=replace(modificado,"!"," ")
    
modificado=replace(modificado,"°"," ")
    
modificado=replace(modificado,"'"," ")
    
modificado=replace(modificado,","," ")
    
modificado=replace(modificado,"  "," ")
    
'creamos un arreglo de las palabras, para busqueda del campo requerido
    txtarray=split(modificado," ")
    '
DECLARACION DE LOS ARREGLOS Y VALORES DE CONTADOR
    dim adjtxtarray
()
    
dim strtxtarray()
    
j=0
    k
=0
    
'REALIZAMOS LA VERIFICACION DE TODAS LAS CASILLAS
    for i=0 to ubound(txtarray)
        '
SI LA LONGITUD ES MENOR O IGUAL A 3
        
'LA SEPARAMOS DE LA CADENA DE BUSQUEDA
        if len(txtarray(i))<=3 then
            '
REDIMENSIONAMOS NUESTRO ARREGLO
            redim preserve adjtxtarray
(k)
            
'GUARDAMOS LOS VALORES QUE SERAN INNECESARIOS
            '
SOLO PARA MOTIVOS DE DESPLIEGUE
            adjtxtarray
(k)=txtarray(i)
            
'AUMENTAMOS NUESTRO CONTADOR
            k=k+1
        '
CASO CONTRARIO Y SEA MAYOR DE 3
        
else
            
'REDIMENSIONAMOS EL ARREGLO DE VALORES A UTILIZAR
            redim preserve strtxtarray(l)
            '
NOS FIJAMOS SI EL VALOR QUE BUSCAMOSCOINCIDE CON NUESTRO CRITERIO
            
if instr(txtarray(i),texto2)<>0 then
                
'SUSTITUIMOS LA PALABRA POR EL VALOR MODIFICADO PARA RESALTE
                strtxtarray(l)=replace(txtarray(i),texto2,modtxt2)
            else
            '
SI NO SE ENCONTRABASOLO GUARDAMOS EL VALOR
                strtxtarray
(l)=txtarray(i)
            
end if
            
'INCREMENTAMOS NUESTRO CONTADOR INTERNO
            l=l+1
        end if
    next
    '
RESPONDEMOS QUE VALORES OMITIMOS EN LA BUSQUEDA
    response
.Write "se han omitido las siguientes palabras <br/>("
        
escarray(adjtxtarray)
    
response.Write ").<br/> "
    
TAMBIEN MOSTRAMOS LOS VALORES QUE REALMENTE SE BUSCARAN
    response
.Write "los valores a considerar en la busqueda seran: <br/>("
        
escarray(strtxtarray)
    
response.Write ")<br/>." 
esta comentada, verifica si te funciona y en dudas... postea
__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:28.