elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  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 2,160 veces)
soru13

Desconectado Desconectado

Mensajes: 246



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

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

Código
  1. <?php
  2. function buscarCadena($video,$palabra)  
  3.       { if (strstr($video,$palabra))
  4. $b = ereg_replace("[^&]*$", "", $video);
  5. $c = str_replace("&", "", $video);
  6. echo "<iframe width='480' height='390' src='http://www.youtube.com/embed/".$c."' frameborder='0' allowfullscreen></iframe>";
  7. else
  8.            echo "<iframe width='480' height='390' src='http://www.youtube.com/embed/".$video."' frameborder='0' allowfullscreen></iframe>";
  9.    }
  10.    $video="http://www.youtube.com/watch?v=AxUOUj9koCs&abc";
  11.    $palabra="&";
  12. $video = str_replace("http://www.youtube.com/watch?v=", "", $video);
  13.    echo buscarCadena($video,$palabra);
  14.  
  15. ?>

el caso es que me da error en el else

Código
  1. else

Código
  1. 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
  1. <?php
  2. function buscarCadena($video,$palabra)  
  3.       { if (strstr($video,$palabra))
  4. echo "Asi no da error";
  5. else
  6.            echo "<iframe width='480' height='390' src='http://www.youtube.com/embed/".$video."' frameborder='0' allowfullscreen></iframe>";
  7.    }
  8.    $video="http://www.youtube.com/watch?v=AxUOUj9koCs&abc";
  9.    $palabra="&";
  10. $video = str_replace("http://www.youtube.com/watch?v=", "", $video);
  11.    echo buscarCadena($video,$palabra);
  12.  
  13. ?>

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

Un saludo!



En línea

#!drvy
Moderador
***
Desconectado Desconectado

Mensajes: 5.850



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

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
  1. <?php
  2. function buscarCadena($video,$palabra) {
  3. if (strstr($video,$palabra)) {
  4. $b = ereg_replace("[^&]*$", "", $video);
  5. $c = str_replace("&", "", $video);
  6. echo "<iframe width='480' height='390' src='http://www.youtube.com/embed/".$c."' frameborder='0' allowfullscreen></iframe>";
  7. } else {
  8.        echo "<iframe width='480' height='390' src='http://www.youtube.com/embed/".$video."' frameborder='0' allowfullscreen></iframe>";
  9.    }
  10. }
  11.    $video="http://www.youtube.com/watch?v=AxUOUj9koCs&abc";
  12.    $palabra="&";
  13. $video = str_replace("http://www.youtube.com/watch?v=", "", $video);
  14.    echo buscarCadena($video,$palabra);
  15.  
  16. ?>


PD: ereg_replace esta deprecated. Usa preg_replace.


Saludos


En línea

soru13

Desconectado Desconectado

Mensajes: 246



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

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
  1. <?php
  2. function buscarCadena($video,$palabra) {
  3. if (strstr($video,$palabra)) {
  4. $b = ereg_replace("[^&\w]+$", "", $video);
  5. $c = str_replace("&", "", $b);
  6. echo "<iframe width='480' height='390' src='http://www.youtube.com/embed/".$c."' frameborder='0' allowfullscreen></iframe>";
  7. echo $c;
  8. } else {
  9.        echo "<iframe width='480' height='390' src='http://www.youtube.com/embed/".$video."' frameborder='0' allowfullscreen></iframe>";
  10.    }
  11. }
  12.    $video="http://www.youtube.com/watch?v=aZqanpeONw4&feature=feed";
  13.    $palabra="&";
  14. $video = str_replace("http://www.youtube.com/watch?v=", "", $video);
  15.    echo buscarCadena($video,$palabra);
  16.  
  17. ?>

uso esta expresión regular

Código
  1. [^&\w]+$

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

Código
  1. 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
  1. 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 pm por soru13 » En línea

#!drvy
Moderador
***
Desconectado Desconectado

Mensajes: 5.850



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

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
  1. <?php
  2. function buscarCadena($video,$palabra) {
  3. if (strstr($video,$palabra)) {
  4. $b = ereg_replace("[^&\w]+$", "", $video);
  5. $c = explode('&',$b);
  6. $c = $c[0];
  7. echo "<iframe width='480' height='390' src='http://www.youtube.com/embed/".$c."' frameborder='0' allowfullscreen></iframe>";
  8. } else {
  9.        echo "<iframe width='480' height='390' src='http://www.youtube.com/embed/".$video."' frameborder='0' allowfullscreen></iframe>";
  10.    }
  11. }
  12.    $video="http://www.youtube.com/watch?feature=feed&v=aZqanpeONw4";
  13.    $palabra="&";
  14. $video = str_replace("http://www.youtube.com/watch?v=", "", $video);
  15.    echo buscarCadena($video,$palabra);
  16.  
  17. ?>

Para eso, te pongo un ejemplo mio para que veas como va mas o menos y decidas tu cual vas a usar :)
Código
  1. <?php
  2. function buscarCadena($video) {
  3. if (!empty($video)) {
  4. $b = preg_match("#(?<=v=)[a-zA-Z0-9-]+(?=&)|(?<=[0-9]/)[^&\n]+|(?<=v=)[^&\n]+#",$video, $c);
  5. echo "<iframe width='480' height='390' src='http://www.youtube.com/embed/".$c[0]."' frameborder='0' allowfullscreen></iframe>";
  6. } else {
  7.        echo "<iframe width='480' height='390' src='http://www.youtube.com/embed/".$video."' frameborder='0' allowfullscreen></iframe>";
  8.    }
  9. }
  10.    $video="http://www.youtube.com/watch?feature=feed&v=aZqanpeONw4";
  11.    echo buscarCadena($video,$palabra);
  12.  
  13. ?>
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: 246



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

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

Un saludo!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines