Foros del Web » Programando para Internet » PHP »

Buscar dentro de un texto

Estas en el tema de Buscar dentro de un texto en el foro de PHP en Foros del Web. tengo una pagina donde muestro un listado de articulos, al cliquear en alguno en particular me muestra en otra pagina el articulo completo, ese articulo ...
  #1 (permalink)  
Antiguo 29/08/2006, 08:14
 
Fecha de Ingreso: septiembre-2003
Mensajes: 197
Antigüedad: 21 años, 2 meses
Puntos: 0
Buscar dentro de un texto

tengo una pagina donde muestro un listado de articulos, al cliquear en alguno en particular me muestra en otra pagina el articulo completo, ese articulo esta almacenado en una tabla en un compo tipo text, lo que quisiera lograr es mediante un script en php que busque en el articulo todo lo que este entre comillas (que pueden ser varios parrafos) y lo cambie a bastardilla.
eso se puede hacer de alguna manera??

Gracias
  #2 (permalink)  
Antiguo 29/08/2006, 08:42
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
En SQL tienes manejo de "expresiones regulares" por si buscas un "patrón" dato (tu texto que vá entre comillas por ejemplo). En PHP también puedes usar las mismas expresiones regulares. Tambien tienes funciones de control de strings (tanto en SQL como en PHP).

Lo mejor sería que ya que trabajas con datos que están en una BBDD que gestiones todo el tema sobre BBDD y su SQL.

Si vas a usar "expresiones regulares" .. la expresión regular que necesites será igual si lo usas bajo PHP o con SQL (y el detalle está que el tema de "Expresiones regulares" como veras no depende ni de PHP ni de SQL .. ni de otros "lenguajes". son las "Expresiones regulares" un lenguaje própio de tratamiento de cadenas ... (y por mi parte no son mi fuerte)

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 29/08/2006, 09:04
 
Fecha de Ingreso: septiembre-2003
Mensajes: 197
Antigüedad: 21 años, 2 meses
Puntos: 0
Cluster gracias por tu respuesta
hay algun ejemplo o pagina de referencia para que pueda ver ?

o que otro metodo me sugeris?
  #4 (permalink)  
Antiguo 29/08/2006, 09:17
Avatar de Azrael666  
Fecha de Ingreso: noviembre-2004
Mensajes: 652
Antigüedad: 20 años
Puntos: 1
yo tengo una idea pero es MALISIMA (aunque no me aguanto sin ponerlo aun sabiendo que Cluster me pueda canear jajajaja):
Código PHP:
function pasarNegrita($texto)
{
$partesexplode("\"",$texto);  //o como se indique aqui las dobles comillas

if (count($partes)>3
//tres partes, minimo de 2 comillas --> texto1  "texto2" blabla
{
//la primera parte como está.. no hay comillas
$textofinal=$partes[0]; 

for (
$i=1;$i<count($partes);$i++)
{
 if (
$i%2!=0//si es cadena impar (no me acuerdo si se comprobaba asi jajaja)
  
$textofinal.="<b>".$partes[$i];
else 
$textofinal.="</b>".$partes[$i];
}
}
else
{
 
//no hay un minimo de dos comillas, error.
  
$textofinal=$texto;  //o mostrar error
}
return 
$textofinal;

podría funcionar.. pero no se yo .. lo he pensado ahora en 5 minutos jajaja
__________________
ALOZORRO v5.0 (ahora en .es)

Última edición por Azrael666; 29/08/2006 a las 09:20 Razón: lo meto entre etiquetas php
  #5 (permalink)  
Antiguo 29/08/2006, 09:26
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Ejemplo con la expresión regular que necesitas no sé si habrá .. pero algo que te puede ayudar:

Funciones de PHP:
ereg_replace()
www.php.net/ereg_replace


Un saludo,

PD: que es "bastardilla" .. En cualquier caso .. si es un tipo de tipografía .. se tratará de añadir HTML por médio para darle ese formato.
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #6 (permalink)  
Antiguo 29/08/2006, 09:27
Avatar de Azrael666  
Fecha de Ingreso: noviembre-2004
Mensajes: 652
Antigüedad: 20 años
Puntos: 1
Cita:
PD: que es "bastardilla"
yo supongo que será negrita.. por lo de <b> ---> Bastardilla.. sino.. ni idea..
__________________
ALOZORRO v5.0 (ahora en .es)
  #7 (permalink)  
Antiguo 29/08/2006, 09:42
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Cita:
Iniciado por Azrael666 Ver Mensaje
yo tengo una idea pero es MALISIMA (aunque no me aguanto sin ponerlo aun sabiendo que Cluster me pueda canear jajajaja):
Código PHP:
function pasarNegrita($texto)
{
$partesexplode("\"",$texto);  //o como se indique aqui las dobles comillas

if (count($partes)>3
//tres partes, minimo de 2 comillas --> texto1  "texto2" blabla
{
//la primera parte como está.. no hay comillas
$textofinal=$partes[0]; 

for (
$i=1;$i<count($partes);$i++)
{
 if (
$i%2!=0//si es cadena impar (no me acuerdo si se comprobaba asi jajaja)
  
$textofinal.="<b>".$partes[$i];
else 
$textofinal.="</b>".$partes[$i];
}
}
else
{
 
//no hay un minimo de dos comillas, error.
  
$textofinal=$texto;  //o mostrar error
}
return 
$textofinal;

podría funcionar.. pero no se yo .. lo he pensado ahora en 5 minutos jajaja
Tranquilo, a mi me enseño la práctica así:

1°: que funcione.
2°: que sea "seguro".
3°: que se más óptimo que la solución 1.

Y de ahí ya todo lo que quieras .. Todo esto se puede discutir (el orden) .. pero al final .. lo que prima es "que funcione" .. una vez que lo haga si realmente el código es tan "malo" ya se verá .. por ejemplo que "tarda mucho más tiempo del esperado en ejecutarse" .. y detalles similares.

Ojala "supiese" lo suficiente sobre expresiones regulares para demostrar lo que propongo .. pero realmente no es mi fuerte ese tema. Sólo sé por lo que veo que soluciones de "tratamiento de cadenas" con expresiones regulares se pueden hacer cosas que con "algorítmos tradicionales" salen con un buen montón de lógica por médio.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #8 (permalink)  
Antiguo 29/08/2006, 09:51
Avatar de Azrael666  
Fecha de Ingreso: noviembre-2004
Mensajes: 652
Antigüedad: 20 años
Puntos: 1
eres el mejor, piraton
__________________
ALOZORRO v5.0 (ahora en .es)
  #9 (permalink)  
Antiguo 29/08/2006, 10:28
 
Fecha de Ingreso: septiembre-2003
Mensajes: 197
Antigüedad: 21 años, 2 meses
Puntos: 0
cuando me referia a bastardilla es que quiero que aparezca el texto inclinado es decir cursiva.
  #10 (permalink)  
Antiguo 30/08/2006, 01:12
Avatar de Azrael666  
Fecha de Ingreso: noviembre-2004
Mensajes: 652
Antigüedad: 20 años
Puntos: 1
aaahh.. bastardilla es cursivaa.... bueno.. pues en mi codigo seria meterle los cierres correspondientes.. lo probaste por alguna casualidad para ver si tiraba?
__________________
ALOZORRO v5.0 (ahora en .es)
  #11 (permalink)  
Antiguo 30/08/2006, 11:57
 
Fecha de Ingreso: septiembre-2003
Mensajes: 197
Antigüedad: 21 años, 2 meses
Puntos: 0
Azrael666, no he podido hacer que funcione. Se podra hacer de alguna otra manera?
  #12 (permalink)  
Antiguo 30/08/2006, 12:32
 
Fecha de Ingreso: septiembre-2003
Mensajes: 197
Antigüedad: 21 años, 2 meses
Puntos: 0
Voy a modificar mi pregunta, como puedo hacer para guardar en una tabla un articulo y que este mantenga sus formatos, por ejemplo, si hay texto en negrita o en cursiva, porque al guardarlo en un campo tipo text estos formatos se pierden.

Realmente lo que necesito es encontarle la vuelta para que cuando se vea el articulo en la pagina mantenga todos los formatos en este caso el texto en cursiva.
  #13 (permalink)  
Antiguo 30/08/2006, 13:08
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Cita:
Iniciado por SinAliaS Ver Mensaje
Voy a modificar mi pregunta, como puedo hacer para guardar en una tabla un articulo y que este mantenga sus formatos, por ejemplo, si hay texto en negrita o en cursiva, porque al guardarlo en un campo tipo text estos formatos se pierden.

Realmente lo que necesito es encontarle la vuelta para que cuando se vea el articulo en la pagina mantenga todos los formatos en este caso el texto en cursiva.
En ese caso usa un "textarea" en DHTML que lo que hacen en el fondo es generar HTML en forma "visual" .. por ejemplo:

HTML Area
www.htmlarea.com

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #14 (permalink)  
Antiguo 30/08/2006, 13:23
 
Fecha de Ingreso: septiembre-2003
Mensajes: 197
Antigüedad: 21 años, 2 meses
Puntos: 0
me podrias mostrar algun ejemplo concreto asi lo entiendo un poco mejor y en español . Gracias
  #15 (permalink)  
Antiguo 30/08/2006, 14:20
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Cita:
Iniciado por SinAliaS Ver Mensaje
me podrias mostrar algun ejemplo concreto asi lo entiendo un poco mejor y en español . Gracias
Por mi parte no tengo ejemplo más que los que puedes ver en ese sitio .. tienen demos del sistema para que lo veas trabajar.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #16 (permalink)  
Antiguo 01/09/2006, 14:59
 
Fecha de Ingreso: septiembre-2003
Mensajes: 197
Antigüedad: 21 años, 2 meses
Puntos: 0
Al final lo resolvi asi:
Como era un texto dinamico el que tenia, el cdigo que me mando Azrael666, lo modifique y quedo asi:

Código PHP:
function pasarCursiva($texto) { 
    
$partesexplode("\"",$texto);  //indican las dobles comillas 
    
    
$textofinal=$partes[0];  
    
    for (
$i=1;$i<count($partes);$i++) { 
        
$impar $i%2//si es cadena impar  
        
if ($impar) { 
            
$textofinal.='<em>"'.$partes[$i]; 
        }elseif(!
$impar){ 
            
$textofinal.='"</em>'.$partes[$i]; 
        }
    } 

return 
$textofinal

y te digo Azrael666que si funciona, ya lo probe con varios articulos. Gracias por tu ayuda

Y gracias tambien a Cluster porque la referencia que me paso tambien me sirvio y la voy a implementar
Cita:
En ese caso usa un "textarea" en DHTML que lo que hacen en el fondo es generar HTML en forma "visual" .. por ejemplo:

HTML Area
www.htmlarea.com
Gracias a todos y sigan asi, que a los que sabemos poco nos dan una gran mano.

Última edición por Cluster; 01/09/2006 a las 15:07
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 14:10.