Foros del Web » Programando para Internet » PHP »

no mostrar lo que esta entre corchetes

Estas en el tema de no mostrar lo que esta entre corchetes en el foro de PHP en Foros del Web. Hola a todos, Tengo una duda sobre el uso de expresiones regulares. En una base de datos tengo textos, que algunos de ellos contienen comentaris ...
  #1 (permalink)  
Antiguo 20/07/2007, 04:54
 
Fecha de Ingreso: agosto-2004
Mensajes: 349
Antigüedad: 19 años, 7 meses
Puntos: 3
no mostrar lo que esta entre corchetes

Hola a todos,

Tengo una duda sobre el uso de expresiones regulares.

En una base de datos tengo textos, que algunos de ellos contienen comentaris entre corchetes.

¿como podria hacerlo para que no se vieran esos comentarios cuando recupero la info?

Gracias de antemano
  #2 (permalink)  
Antiguo 20/07/2007, 06:08
 
Fecha de Ingreso: julio-2007
Ubicación: Delante del PC (Barcelona
Mensajes: 157
Antigüedad: 16 años, 9 meses
Puntos: 2
Re: no mostrar lo que esta entre corchetes

Yo haria esto, aunque no especificas si en el texto siempre hay sólo un comentario. Este te serviria si solo hubiese uno por texto, aplicale este código.

Código PHP:
<?php
$cadena 
"esto [comentario de tanto por tanto] y seguiria";
$inicio "["
$final "]";
     
$i strpos($cadena$inicio);
     
$f strpos($cadena$final);
     
$ff $f $i;
     
$cadena_sin_comentario substr_replace($cadena,'',$i,$ff+1);
     echo 
$cadena_sin_comentario;
?>
Si en el texto puede haber uno, más de uno o ningún comentario dimelo y te modifico el código, no te lo pongo ahora porque no tengo más tiempo.
  #3 (permalink)  
Antiguo 20/07/2007, 06:12
 
Fecha de Ingreso: julio-2007
Ubicación: Delante del PC (Barcelona
Mensajes: 157
Antigüedad: 16 años, 9 meses
Puntos: 2
Re: no mostrar lo que esta entre corchetes

Por cierto, seguramente habrá una función que lo haga directamente, pero la desconozco.
  #4 (permalink)  
Antiguo 20/07/2007, 08:05
Avatar de TolerantX  
Fecha de Ingreso: marzo-2006
Ubicación: Guadalajara, México.
Mensajes: 408
Antigüedad: 18 años, 1 mes
Puntos: 10
Re: no mostrar lo que esta entre corchetes

Código PHP:
$cadena ereg_replace("[""",$cadena); 
Más información ereg_replace
__________________
TolerantX
http://tolerantx.com
Linux User #385226

Última edición por TolerantX; 20/07/2007 a las 09:11 Razón: Corregir línea de código
  #5 (permalink)  
Antiguo 20/07/2007, 09:07
 
Fecha de Ingreso: julio-2007
Ubicación: Delante del PC (Barcelona
Mensajes: 157
Antigüedad: 16 años, 9 meses
Puntos: 2
Re: no mostrar lo que esta entre corchetes

Cita:
Iniciado por TolerantX Ver Mensaje
Código PHP:
$cadena ereg_replace = ("[""",$cadena); 
Más información
He probado esa función y me da error (he sacado el igual que se te ha colado) aunque por la información de php.net esa función substituye una cadena por otra, como le dices que substituya [asdasdasasda asd asd ] ???

dew!
  #6 (permalink)  
Antiguo 20/07/2007, 09:09
Avatar de TolerantX  
Fecha de Ingreso: marzo-2006
Ubicación: Guadalajara, México.
Mensajes: 408
Antigüedad: 18 años, 1 mes
Puntos: 10
Re: no mostrar lo que esta entre corchetes

Cita:
Iniciado por extrem_bcn Ver Mensaje
He probado esa función y me da error (he sacado el igual que se te ha colado) aunque por la información de php.net esa función substituye una cadena por otra, como le dices que substituya [asdasdasasda asd asd ] ???

dew!
Sorry se me fue un igual

Código PHP:
$cadena ereg_replace("[""",$cadena); 
__________________
TolerantX
http://tolerantx.com
Linux User #385226
  #7 (permalink)  
Antiguo 20/07/2007, 10:21
 
Fecha de Ingreso: julio-2007
Ubicación: Delante del PC (Barcelona
Mensajes: 157
Antigüedad: 16 años, 9 meses
Puntos: 2
Re: no mostrar lo que esta entre corchetes

pero eso substituirá el corchete, no substituirá los corchetes y el contenido (vamos yo creo que es lo que el pedia, quizá entendí mal)
  #8 (permalink)  
Antiguo 20/07/2007, 11:07
Avatar de TolerantX  
Fecha de Ingreso: marzo-2006
Ubicación: Guadalajara, México.
Mensajes: 408
Antigüedad: 18 años, 1 mes
Puntos: 10
Re: no mostrar lo que esta entre corchetes

Cierto, el que entendió mal fui yo, sorry xD
__________________
TolerantX
http://tolerantx.com
Linux User #385226

Última edición por TolerantX; 20/07/2007 a las 11:32
  #9 (permalink)  
Antiguo 21/07/2007, 06:55
 
Fecha de Ingreso: agosto-2004
Mensajes: 349
Antigüedad: 19 años, 7 meses
Puntos: 3
Re: no mostrar lo que esta entre corchetes

gracias por responder,

el problema es que en cada texto hay muchas anotaciones entre cochetes y no tendria que verlas al recuperar la información.

seguramente con expresiones regulares es posible, pero no se como seria la sintaxis correcta (entre los corchetes hay palabras numeros y espacios)

gracias
  #10 (permalink)  
Antiguo 21/07/2007, 09:59
 
Fecha de Ingreso: febrero-2001
Mensajes: 149
Antigüedad: 23 años, 2 meses
Puntos: 0
Re: no mostrar lo que esta entre corchetes

Segun yo seria de la siguiente manera

Código PHP:
$cadena 'Hola [haciendo pruebas] mundo';
$cadena ereg_replace("\[.*\]""",$cadena); 
echo 
$cadena
espero te sea de ayuda

saludos
__________________
Mensajes Anonimos
www.mensajesanonimos.com
  #11 (permalink)  
Antiguo 21/07/2007, 20:46
 
Fecha de Ingreso: agosto-2004
Mensajes: 349
Antigüedad: 19 años, 7 meses
Puntos: 3
Re: no mostrar lo que esta entre corchetes

gracias por tu respuesta warner, el problema es que si hay varios comentarios me borra todo el contenido entre el primer corchete del primer comentario y el último corchete del último comentario.

los textos que tengo en la base de datos son del tipo:

esto es un texto de ejemplo [1], ahi va un comentario [hola a todos] y este es otro [24-23]

la idea seria eliminar los corchetes y todo lo que esta dentro quedando:

"esto es un texto de ejemplo ahi va un comentario y este es otro"

creo que se podria hacer excluyendo de la expresion regular el caracter "]" pero no se como se realizan estas exclusiones

gracias de antemano

Última edición por sintesk7; 21/07/2007 a las 20:49 Razón: error de expresion
  #12 (permalink)  
Antiguo 21/07/2007, 22:23
 
Fecha de Ingreso: julio-2007
Mensajes: 71
Antigüedad: 16 años, 9 meses
Puntos: 1
Re: no mostrar lo que esta entre corchetes

Código PHP:
<?

$cadena 
"esto es un texto de ejemplo [1], ahi va un comentario [hola a todos] y este es otro [24-23]. ";
$s=0;
$j=strlen($cadena);
for(
$i=0$i<=$j;$i++)
    {
    if(
$cadena[$i+1]=='['$s=1;
    if(
$s==0) echo $cadena[$i];
    if(
$cadena[$i]==']'$s=0;
    }

?>
A ver si te sirve eso... (dentro del "if($cadena[$i+1]=='[') $s=1;" tuve q incrementarle a $i por el espacio que hay entre la letra y el corchete abierto...)

Espero q te sirva! =)
  #13 (permalink)  
Antiguo 22/07/2007, 11:47
 
Fecha de Ingreso: julio-2007
Ubicación: Delante del PC (Barcelona
Mensajes: 157
Antigüedad: 16 años, 9 meses
Puntos: 2
Re: no mostrar lo que esta entre corchetes

A mi no me sirve el código, pero me ha gustado mucho la resolución jejejeje.

Por cierto, tengo una pregunta, como puede ser que una función tan básica (bajo mi punto de vista) no la tenga PHP, es decir, reemplazar el contenido delimitado entre dos caracteres.
  #14 (permalink)  
Antiguo 22/07/2007, 12:45
 
Fecha de Ingreso: julio-2007
Mensajes: 71
Antigüedad: 16 años, 9 meses
Puntos: 1
Re: no mostrar lo que esta entre corchetes

Extrem: porque no te sirve el código? :S
igual esa idea no es para vos :P
y aca hice la función "básica desde tu punto de vista" :P pa q podamos usarlo entre todos... bah, queria aportar algo jijiji

Código PHP:
<?
function eliminarcontenido($cadena$inicio$final)
{
    
$copia= array();
    
$s=0;
    
$j=strlen($cadena);
    for(
$i=0$i<=$j;$i++)
    {
        if(
$cadena[$i+1]==$inicio$s=1;
        if(
$s==0$copia[$i] = $cadena[$i];
        if(
$cadena[$i]==$final$s=0;
    }
    return 
implode(''$copia);
}

$cadena "esto es un texto de ejemplo [1], ahi va un comentario [hola a todos] y este es otro [24-23]. ";
$cad eliminarcontenido($cadena'['']');
echo 
$cad;
?>
Suerte!
  #15 (permalink)  
Antiguo 22/07/2007, 20:12
Avatar de tutorialphp  
Fecha de Ingreso: junio-2007
Mensajes: 31
Antigüedad: 16 años, 10 meses
Puntos: 0
Re: no mostrar lo que esta entre corchetes

Prueba con expresiones regulares, escribi este articulo por si quieres prufundizar en el tema.

http://tutorialphp.net/cap11_1expres...ue_son_php.php
Son tres fases.

Suerte
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 18:57.