elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
28 Mayo 2012, 04:47  


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales

+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP
| | | |-+  problemilla else
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: problemilla else  (Leído 519 veces)
soru13

Desconectado Desconectado

Mensajes: 211



Ver Perfil
problemilla else
« en: 8 Mayo 2011, 14:28 »

hola,tengo un problema, hice el siguiente código:

Código
<?php 
function buscarCadena($video,$palabra)  
      { if (strstr($video,$palabra))
$b = ereg_replace("[^&]*$", "", $video);
$c = str_replace("&", "", $video);
echo "<iframe width='480' height='390' src='http://www.youtube.com/embed/".$c."' frameborder='0' allowfullscreen></iframe>";
else
           echo "<iframe width='480' height='390' src='http://www.youtube.com/embed/".$video."' frameborder='0' allowfullscreen></iframe>";
   }
   $video="http://www.youtube.com/watch?v=AxUOUj9koCs&abc";
   $palabra="&";
$video = str_replace("http://www.youtube.com/watch?v=", "", $video);
   echo buscarCadena($video,$palabra);
 
?>

el caso es que me da error en el else

Código
else

Código
Parse error: syntax error, unexpected T_ELSE in /home/web/public_html/youtube.php on line 14

pero si pongo lo siguiente no me da error

Código
<?php 
function buscarCadena($video,$palabra)  
      { if (strstr($video,$palabra))
echo "Asi no da error";
else
           echo "<iframe width='480' height='390' src='http://www.youtube.com/embed/".$video."' frameborder='0' allowfullscreen></iframe>";
   }
   $video="http://www.youtube.com/watch?v=AxUOUj9koCs&abc";
   $palabra="&";
$video = str_replace("http://www.youtube.com/watch?v=", "", $video);
   echo buscarCadena($video,$palabra);
 
?>

¿A qué se debe esto?. Gracias por la ayuda.

Un saludo!



En línea
drvy | BSM


Desconectado Desconectado

Mensajes: 1.129


badstupidmonkey


Ver Perfil WWW
Re: problemilla else
« Respuesta #1 en: 8 Mayo 2011, 15:02 »

Hola, cuando abras un if/else/elseif (auque aveces no es 100% obligatorio) siempre usa las claves { y } para indicar donde empieza un if donde termina y donde empieza un else y donde termina. Es poco recomendable no hacerlo y ademas puedes confundir al propio PHP.

Código
<?php 
function buscarCadena($video,$palabra) {
if (strstr($video,$palabra)) {
$b = ereg_replace("[^&]*$", "", $video);
$c = str_replace("&", "", $video);
echo "<iframe width='480' height='390' src='http://www.youtube.com/embed/".$c."' frameborder='0' allowfullscreen></iframe>";
} else {
       echo "<iframe width='480' height='390' src='http://www.youtube.com/embed/".$video."' frameborder='0' allowfullscreen></iframe>";
   }
}
   $video="http://www.youtube.com/watch?v=AxUOUj9koCs&abc";
   $palabra="&";
$video = str_replace("http://www.youtube.com/watch?v=", "", $video);
   echo buscarCadena($video,$palabra);
 
?>


PD: ereg_replace esta deprecated. Usa preg_replace.


Saludos


En línea
soru13

Desconectado Desconectado

Mensajes: 211



Ver Perfil
Re: problemilla else
« Respuesta #2 en: 8 Mayo 2011, 15:19 »

Muchas gracias drvy | BSM, ya me funciona perfectamente.

Edit: tengo otro pequeño problemilla,aver si alguien me puede ayudar, con este código,que anteriormente e puesto

Código
<?php 
function buscarCadena($video,$palabra) {
if (strstr($video,$palabra)) {
$b = ereg_replace("[^&\w]+$", "", $video);
$c = str_replace("&", "", $b);
echo "<iframe width='480' height='390' src='http://www.youtube.com/embed/".$c."' frameborder='0' allowfullscreen></iframe>";
echo $c;
} else {
       echo "<iframe width='480' height='390' src='http://www.youtube.com/embed/".$video."' frameborder='0' allowfullscreen></iframe>";
   }
}
   $video="http://www.youtube.com/watch?v=aZqanpeONw4&feature=feed";
   $palabra="&";
$video = str_replace("http://www.youtube.com/watch?v=", "", $video);
   echo buscarCadena($video,$palabra);
 
?>

uso esta expresión regular

Código
[^&\w]+$

y me extrae la dirección de un video de youtube desde el primer &

Código
http://www.youtube.com/watch?v=aZqanpeONw4&feature=feed

pero si ya hay más de un &,no lo saca bien, por ejemplo:

Código
http://www.youtube.com/watch?v=aZqanpeONw4&feature=feed&search=algo

en este caso me devuelve

Citar
aZqanpeONw4feature=feed

sé que el problema debe de estar en la expresión regular,pero ya me he mirado unos cuantos tutoriales de expresiones regulares y no consigo solucionarlo, ¿alguien sabria decirme que es lo que ocurre y cómo podría solucionarlo?.

Gracias a todos!
« Última modificación: 8 Mayo 2011, 16:12 por soru13 » En línea
drvy | BSM


Desconectado Desconectado

Mensajes: 1.129


badstupidmonkey


Ver Perfil WWW
Re: problemilla else
« Respuesta #3 en: 8 Mayo 2011, 17:45 »

Hola, de la manera que lo haces tu lo unico que se me ocurre es usar un explode para separar los &. Pero es poco practico ya que por ejemplo si el video empieza por watch?feature=feed&v=aZqanpeONw4 en vez de watch?v=aZqanpeONw4&feature=feed el script deja de funcionar.

Código
<?php 
function buscarCadena($video,$palabra) {
if (strstr($video,$palabra)) {
$b = ereg_replace("[^&\w]+$", "", $video);
$c = explode('&',$b);
$c = $c[0];
echo "<iframe width='480' height='390' src='http://www.youtube.com/embed/".$c."' frameborder='0' allowfullscreen></iframe>";
} else {
       echo "<iframe width='480' height='390' src='http://www.youtube.com/embed/".$video."' frameborder='0' allowfullscreen></iframe>";
   }
}
   $video="http://www.youtube.com/watch?feature=feed&v=aZqanpeONw4";
   $palabra="&";
$video = str_replace("http://www.youtube.com/watch?v=", "", $video);
   echo buscarCadena($video,$palabra);
 
?>

Para eso, te pongo un ejemplo mio para que veas como va mas o menos y decidas tu cual vas a usar :)
Código
<?php 
function buscarCadena($video) {
if (!empty($video)) {
$b = preg_match("#(?<=v=)[a-zA-Z0-9-]+(?=&)|(?<=[0-9]/)[^&\n]+|(?<=v=)[^&\n]+#",$video, $c);
echo "<iframe width='480' height='390' src='http://www.youtube.com/embed/".$c[0]."' frameborder='0' allowfullscreen></iframe>";
} else {
       echo "<iframe width='480' height='390' src='http://www.youtube.com/embed/".$video."' frameborder='0' allowfullscreen></iframe>";
   }
}
   $video="http://www.youtube.com/watch?feature=feed&v=aZqanpeONw4";
   echo buscarCadena($video,$palabra);
 
?>
Este ultimo busca únicamente el tag "v=" y donde se cierra y recoge las letras y números dentro de el. Es bastante comodo porque vaya donde vaya ese tag en la url lo pillara.


Saludos
En línea
soru13

Desconectado Desconectado

Mensajes: 211



Ver Perfil
Re: problemilla else
« Respuesta #4 en: 8 Mayo 2011, 18:12 »

Muchas gracias drvy | BSM, era justo lo que necesitaba.  ;-)

Un saludo!
En línea
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
win.com... un problemilla
Windows
Blank Demon 4 615 Último mensaje 20 Marzo 2004, 16:21
por Blank Demon
Problemilla con JTR
Hacking Básico
SaTaDaS 3 468 Último mensaje 27 Julio 2004, 09:46
por SaTaDaS
problemilla
Hardware
Villamil 3 439 Último mensaje 10 Agosto 2004, 22:39
por Villamil
problemilla
Windows
Pelopincho 9 724 Último mensaje 22 Octubre 2004, 21:02
por Pelopincho
Problemilla con mi pc « 1 2 »
Dudas Generales
Garcam 17 1,138 Último mensaje 26 Febrero 2006, 02:46
por Blue_box
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines