Foros del Web » Programando para Internet » PHP »

Error T_For en la siguiente función...

Estas en el tema de Error T_For en la siguiente función... en el foro de PHP en Foros del Web. Buenas, estoy tratando de crear una función para hacer lo siguiente: Estoy extrayendo de la base de datos de mi foro los mensajes de ciertos ...
  #1 (permalink)  
Antiguo 12/10/2007, 11:58
 
Fecha de Ingreso: febrero-2007
Mensajes: 41
Antigüedad: 17 años, 2 meses
Puntos: 0
Error T_For en la siguiente función...

Buenas, estoy tratando de crear una función para hacer lo siguiente:

Estoy extrayendo de la base de datos de mi foro los mensajes de ciertos subforos, peor me aparece en la pagina con el cogiidgo bbcode incrustado. Asi...

Código:
Hola, en esta [b]pagina[b] hay excelentes recursos para hcer imagenes como estas [IMG]enlacehttp[/IMG], y creo que es conveniente...
Entonces estoy creando una función que recorra ese mensaje y me elimine primero las direcciones http:// para luego eliminar los tag encerrados por []. Pero me aparece un error señalando el primer for y diciendo Parse error: parse error, unexpected T_FOR Alguien que me diga que tengo mal? Que me ayude en la construcciín de esta función...??? Gracias!

Código PHP:
function limpiar($mensaje) {
$cadena=strlen($mensaje)
 for (
$i =$i<=$cadena;$i++) { 
         
$letra=substr($mensaje,$i,1)
         if 
$letra=='h' {
          if 
substr($mensaje,$i,7)="http://"{
              for (
$a=i;  $a <=$cadena$a++){
                
$fin=substr($mensaje,$a,1)
                if 
$fin=='[' or $fin==']' {
                    
$mensajesubstr($mensaje,0$i-1). .substr($mensaje,$fin,$cadena)
                }
            }
          }
         }
    } 

  #2 (permalink)  
Antiguo 12/10/2007, 12:09
Avatar de jorgedx  
Fecha de Ingreso: junio-2005
Ubicación: Chile, Los Andes
Mensajes: 406
Antigüedad: 18 años, 10 meses
Puntos: 4
Re: Error T_For en la siguiente función...

Hola angarzafir, generalmente estos errores se dan por faltas en la sintaxis, porque php esta esperando otra instruccion, en tu caso estaba esperando que cerraras la instruccion en esta linea, o en otras palabras te faltan varios punto y coma ";"
Código PHP:
revisa el codigo de marvin abajo.... a mi me faltaron errores por decirte :) 
Saludos.
  #3 (permalink)  
Antiguo 12/10/2007, 12:10
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 2 meses
Puntos: 81
Re: Error T_For en la siguiente función...

Todos los errores son porque no cierras las lineas con punto y coma (;) y no agregas los parentesis en los if, tambien un problema al concatenar:

Reemplaza por esto:

Código PHP:
function limpiar($mensaje) { 
    
$cadena=strlen($mensaje);
    for (
$i =$i<=$cadena;$i++){  
        
$letra=substr($mensaje,$i,1); 
        if (
$letra=='h') { 
            if (
substr($mensaje,$i,7)="http://"){ 
                for (
$a=i;  $a <=$cadena$a++){ 
                    
$fin=substr($mensaje,$a,1); 
                    if (
$fin=='[' or $fin==']') { 
                        
$mensajesubstr($mensaje,0$i-1).substr($mensaje,$fin,$cadena); 
                    } 
                } 
            } 
        } 
    }  


Suerte!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #4 (permalink)  
Antiguo 12/10/2007, 13:58
 
Fecha de Ingreso: febrero-2007
Mensajes: 41
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Error T_For en la siguiente función...

Buenas, muchas gracias por contestar! Ya me fije el error y acabo de arreglarlo, peor ahora me da el siguiente error...

Fatal error: Can't use function return value in write context

No se que sucede... la forma en que llamo a la funcion es esta...

Código:
   <? echo limpiar($mensaje);?><br>
Que estare obviando?
  #5 (permalink)  
Antiguo 12/10/2007, 14:09
Avatar de jorgedx  
Fecha de Ingreso: junio-2005
Ubicación: Chile, Los Andes
Mensajes: 406
Antigüedad: 18 años, 10 meses
Puntos: 4
Re: Error T_For en la siguiente función...

hay otro error en tu funcion estas igualando dentro de un if, sin embargo creo que lo que quieres hacer es comparar y debe usar
Código:
if(algo == otra_cosa){}
en esta linea

Código PHP:
 if (substr($mensaje,$i,7)=="http://"){ 
De todas maneras podrias escribir un ejemplo del texto que le pasas a la funcion dentro de la variable $mensaje, asi podre probarlo de mejor manera.

y ademas estas pidiendo que la funcion limpiar devuelva algo y dentro de ella no hay ningun return..

debes colocar
Código PHP:
return $mensaje
Saludos.
  #6 (permalink)  
Antiguo 12/10/2007, 15:00
 
Fecha de Ingreso: febrero-2007
Mensajes: 41
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Error T_For en la siguiente función...

Bueno, ahora como que esta tardando para ejecutarmela... es algo como esto lo que me recibe la funcion

[img:32cbe]http://img115.imageshack.us/img115/6190/simpwall800mxun4.jpg[/img:32cbe] [b:32cbe]El sabado pasado, pudimos disfrutar de la tan esperada pelicula de la familia americana más famosa...Los Simpson! Primero que todo hay que destacar que en casi todos los paises donde aterrizó batió records de venta de entradas, tanto para el día del estreno (27 de Julio) como para los días posteriores...Desde nuestra experiencia, lo que podemos decir, que aca en Argentina no se quedó atrás...el sabado el cine estaba lleno de gente y con funciones cada media hora aproximadamente...Gente de todas las edades, eso era lo más loco...nenes con sus papas, adolescentes, jovenes y adultos de más de 50 ^^ todos esperaban ansiosos el poder ver esta pelicula...Y es que más allá de las criticas que han tenido sus ultimas temporadas televisivas, Los Simpson es y seguirá siendo un clasico de la animación que nunca pasa de moda! Ahora si, a comentar la peli, que es el tema de este post... Par

Quiero que por ahora quede asi: sin el encale encerrado entre img

[b:32cbe] [b:32cbe]El sabado pasado, pudimos disfrutar de la tan esperada pelicula de la familia americana más famosa...Los Simpson! Primero que todo hay que destacar que en casi todos los paises donde aterrizó batió records de venta de entradas, tanto para el día del estreno (27 de Julio) como para los días posteriores...Desde nuestra experiencia, lo que podemos decir, que aca en Argentina no se quedó atrás...el sabado el cine estaba lleno de gente y con funciones cada media hora aproximadamente...Gente de todas las edades, eso era lo más loco...nenes con sus papas, adolescentes, jovenes y adultos de más de 50 ^^ todos esperaban ansiosos el poder ver esta pelicula...Y es que más allá de las criticas que han tenido sus ultimas temporadas televisivas, Los Simpson es y seguirá siendo un clasico de la animación que nunca pasa de moda! Ahora si, a comentar la peli, que es el tema de este post... Par

Ahora al ejecutarlo me aparece este error.

Fatal error: Maximum execution time of 60 seconds exceeded in

Al parecer se queda cuando estoy concatenando, en esta linea:

$mensaje= substr($mensaje,0, $i-1).substr($mensaje,$fin,$cadena);

Última edición por angarzafir; 12/10/2007 a las 15:21 Razón: para que se entienda mejor...
  #7 (permalink)  
Antiguo 12/10/2007, 16:09
Avatar de Sergestux  
Fecha de Ingreso: agosto-2007
Ubicación: Tapachula
Mensajes: 1.218
Antigüedad: 16 años, 8 meses
Puntos: 20
Re: Error T_For en la siguiente función...

Por que no mejor pruebas esto:
Código PHP:
$Cadena="[img:32cbe]http://img115.imageshack.us/img115/6190/simpwall800mxun4.jpg[/img:32cbe] [b:32cbe]El sabado pasado, pudimos disfrutar de la tan esperada pelicula de la familia americana más famosa...Los Simpson! Primero que todo hay que destacar que en casi todos los paises donde aterrizó batió records de venta de entradas, tanto para el día del estreno (27 de Julio) como para los días posteriores...Desde nuestra experiencia, lo que podemos decir, que aca en Argentina no se quedó atrás...el sabado el cine estaba lleno de gente y con funciones cada media hora aproximadamente...Gente de todas las edades, eso era lo más loco...nenes con sus papas, adolescentes, jovenes y adultos de más de 50 ^^ todos esperaban ansiosos el poder ver esta pelicula...Y es que más allá de las criticas que han tenido sus ultimas temporadas televisivas, Los Simpson es y seguirá siendo un clasico de la animación que nunca pasa de moda! Ahora si, a comentar la peli, que es el tema de este post... Par";
$Pos=strpos($Cadena'[b:');
$Cadena2=substr($Cadena,$Pos);
echo 
$Cadena2
...Sorry no lei buen tu problema y esto que te di no es la solucion
  #8 (permalink)  
Antiguo 12/10/2007, 16:37
Avatar de jorgedx  
Fecha de Ingreso: junio-2005
Ubicación: Chile, Los Andes
Mensajes: 406
Antigüedad: 18 años, 10 meses
Puntos: 4
Re: Error T_For en la siguiente función...

se soluciono con eso?????
  #9 (permalink)  
Antiguo 12/10/2007, 16:40
 
Fecha de Ingreso: febrero-2007
Mensajes: 41
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Error T_For en la siguiente función...

No, para nada... es que eso no me ayuda, veo que lo que dice es para sacar algo de las etiquetas [b] no quiero eso...

No se que psas pero me da : me da esto... y no termina de cargar la pagina...

manganimart.web.ve/index2.php verifiquen para que vean..., no se que sera...
  #10 (permalink)  
Antiguo 12/10/2007, 16:58
Avatar de jorgedx  
Fecha de Ingreso: junio-2005
Ubicación: Chile, Los Andes
Mensajes: 406
Antigüedad: 18 años, 10 meses
Puntos: 4
Re: Error T_For en la siguiente función...

mira lo que Sergestux dice con el codigo es :

Código PHP:


function limpiar($cadena){

//selecciona la posicion donde se encuentra [b:que es lo que tu quieres mantener 
       
$Pos=strpos($cadena'[b:');

//luego corta la cadena a partir de esa posicion
    
$Cadena2=substr($cadena,$Pos);

//devuelve la cadena 
    
return $Cadena2;

}

echo 
limpiar($mensaje)


///////////////////
$mensaje="[img:32cbe]http://img115.imageshack.us/img115/6190/simpwall800mxun4.jpg[/img:32cbe] [b:32cbe]El sabado pasado, pudimos disfrutar de la tan esperada pelicula de la familia americana más famosa...Los Simpson! Primero que todo hay que destacar que en casi todos los paises donde aterrizó batió records de venta de entradas, tanto para el día del estreno (27 de Julio) como para los días posteriores...Desde nuestra experiencia, lo que podemos decir, que aca en Argentina no se quedó atrás...el sabado el cine estaba lleno de gente y con funciones cada media hora aproximadamente...Gente de todas las edades, eso era lo más loco...nenes con sus papas, adolescentes, jovenes y adultos de más de 50 ^^ todos esperaban ansiosos el poder ver esta pelicula...Y es que más allá de las criticas que han tenido sus ultimas temporadas televisivas, Los Simpson es y seguirá siendo un clasico de la animación que nunca pasa de moda! Ahora si, a comentar la peli, que es el tema de este post... Par"


Lo que si... este codigo no te va a funcionar si tienes la imagen entremedio del texto. siempre al principio

a mi me funciona perfecto...
  #11 (permalink)  
Antiguo 12/10/2007, 18:28
 
Fecha de Ingreso: febrero-2007
Mensajes: 41
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Error T_For en la siguiente función...

ok, mmm ya lo probe y por lo menos no me da el error anterior... pero todavia hay muchas cosas que arreglar ya que solo me borra en tal caso una etiqueta...

Este es mas o menos el texto que entra al la funcion:

]EyeShield 21[/size:fc487] Por Animeche A quien no le apasiona el Futbol Americano, le amará después que vea este Anime. [a_img=:fc487]http://www.ngcfrance.com/images/news/ds/eye_shield_21/art_002.jpg[/a_img:fc487] Antecedentes En la escuela preparatoria Deimon, tres jóvenes anhelaban jugar en el Christmas Bowl, que es el Super Bowl de la liga juvenil japonesa. Esos jóvenes se llamaban Youichi Hiruma, Ryoukan Kurita y Gen “Musashi” Takekura, y dedicaban casi todo su tiempo en practicar fútbol americano. Sin embargo, debido a ciertos problemas Musashi se alejó del dúo, quedando el equipo más desolado aún. Ya cuando el par de jóvenes que quedaron, estaban en el último año de la escuela preparatoria, decidieron reclutar jóvenes para poder cumplir la promesa que habían hecho los tres amigos separados: Jugar en la Christmas Bowl. Trama [a_img=:fc487]http://animeclick.lycos.it/prove/serie/EyeShield21/EyeShield2111.jpg[/a_img:fc487] EyeShield 21 es la historia de Sena Ko

Lo que quiero que haga esta función es limpiar, quitando primero todas las url y por ultimo quitando todo lo que este encerrado en [ ] para que quede algo asi

EyeShield 21 Por Animeche A quien no le apasiona el Futbol Americano, le amará después que vea este Anime. Antecedentes En la escuela preparatoria Deimon, tres jóvenes anhelaban jugar en el Christmas Bowl, que es el Super Bowl de la liga juvenil japonesa. Esos jóvenes se llamaban Youichi Hiruma, Ryoukan Kurita y Gen “Musashi” Takekura, y dedicaban casi todo su tiempo en practicar fútbol americano. Sin embargo, debido a ciertos problemas Musashi se alejó del dúo, quedando el equipo más desolado aún. Ya cuando el par de jóvenes que quedaron, estaban en el último año de la escuela preparatoria, decidieron reclutar jóvenes para poder cumplir la promesa que habían hecho los tres amigos separados: Jugar en la Christmas Bowl. Trama EyeShield 21 es la historia de Sena Ko

Por eso en la función que les traje primero, buscaba todos los http y empezaba a eliminarlos hasta que llegara a un [ ]. Son varias que puedo encontrar en un solo texto de 1000 caracteres. Lo que no entiendo de la función es porque se cuelga! No entiendo eso, algo debe haber mal, no se si un paso de parametros o un choque entre tipos, de verdad que no se... Necesito ayuda ya que soy nueva en php y aunque se programar no conozco mucho del funcionamiento de este lenguaje.
  #12 (permalink)  
Antiguo 12/10/2007, 18:37
Avatar de jorgedx  
Fecha de Ingreso: junio-2005
Ubicación: Chile, Los Andes
Mensajes: 406
Antigüedad: 18 años, 10 meses
Puntos: 4
Re: Error T_For en la siguiente función...

mira lo que quieres hjacer se hace con arrays debes desarrollar un funcion similar a la que planteaste recorriendo arrays y poniendo condiciones sobre donde debe cortar la "cadena" ya sea:

]EyeShield 21[/size:fc487]
[a_img=:fc487]

o cualquier otra que te plantees lo que debes tener en consideracion es que estas "etiquetas" tienen ciertos rasgos que te van a ayudar a reconocerlas dentro del texto:
A continuacion te dejo un link donde encuentras muchas funciones de php justamente para menejo de arreglos espero sea de ayuda ...

http://cl.php.net/manual/es/ref.array.php

Saludos y mucha suerte.
  #13 (permalink)  
Antiguo 12/10/2007, 18:40
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 2 meses
Puntos: 81
Re: Error T_For en la siguiente función...

Yap, prueba con este:

Código PHP:
function limpiar($cadena){
    
$pattern "[a-zA-Z]+://([.]?[a-zA-Z0-9_/-])*";
    
$cadena ereg_replace($pattern""$cadena);
    return 
$cadena;
}

$mensaje="[img:32cbe]http://img115.imageshack.us/img115/6190/simpwall800mxun4.jpg[/img:32cbe] [b:32cbe]El sabado pasado, pudimos disfrutar de la tan esperada pelicula de la familia americana más famosa...Los Simpson! Primero que todo hay que destacar que en casi todos los paises donde aterrizó batió records de venta de entradas, tanto para el día del estreno (27 de Julio) como para los días posteriores...Desde nuestra experiencia, lo que podemos decir, que aca en Argentina no se quedó atrás...el sabado el cine estaba lleno de gente y con funciones cada media hora aproximadamente...Gente de todas las edades, eso era lo más loco...nenes con sus papas, adolescentes, jovenes y adultos de más de 50 ^^ todos esperaban ansiosos el poder ver esta pelicula...Y es que más allá de las criticas que han tenido sus ultimas temporadas televisivas, Los Simpson es y seguirá siendo un clasico de la animación que nunca pasa de moda! Ahora si, a comentar la peli, que es el tema de este post... Par";  

echo 
limpiar($mensaje); 
Con esto lo que haces es eliminar todos los webs tipo http://www.cualkercosa.com/asdasd/asdasd/asd....
Y luego hay que ver como hacer el patron para eliminar las cosas con "[" "]"...

Por ahora tengo que salir.


Suerte!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #14 (permalink)  
Antiguo 13/10/2007, 15:32
 
Fecha de Ingreso: febrero-2007
Mensajes: 41
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Error T_For en la siguiente función...

Gracias! esto me funciono!!! Hola, muchas gracias por tu ayuda, ya hice lo que me dijiste y funciono a la perfección. He estado trabajando con el patron que me dijistes, usando algunas web de referencias y hasta ahora tengo esto:

Código PHP:
$codigo "[[a-zA-Z0-9.:=?/_\-]+\]"
    
$cadena ereg_replace($codigo""$cadena); 
Ya me elimina la mayoria de los que esta entre [], pero cuando se encuentra con ['url=enlace](coloque el apotrofe porque no me dejaba pasar el url solo...) no me la elimina, ni la primera función elimina la url, ni esta que tengo le elimina todo lo que esta dentro del corchete. Es lo último que me falta para tener lista mi función.

Mi función completa es:

Código PHP:
function limpiar($cadena){ 
    
$pattern "[a-zA-Z]+://([.]?[a-zA-Z0-9_/-])*"
    
$cadena ereg_replace($pattern""$cadena); 
    
$codigo "[[a-zA-Z0-9.:=?/_\-]+\]"
    
$cadena ereg_replace($codigo""$cadena);
    return 
$cadena
    

Millones de gracias a todos por ayudarme!!!

Última edición por angarzafir; 13/10/2007 a las 17:18 Razón: Agregando información...
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 16:56.