Título: problemilla else
Publicado por: soru13 en 8 Mayo 2011, 14:28 pm
hola,tengo un problema, hice el siguiente código: <?php function buscarCadena($video,$palabra) { if (strstr($video,$palabra)) 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 else
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 <?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!
Título: Re: problemilla else
Publicado por: #!drvy 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. <?php function buscarCadena($video,$palabra) { if (strstr($video,$palabra)) { 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
Título: Re: problemilla else
Publicado por: soru13 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 <?php function buscarCadena($video,$palabra) { if (strstr($video,$palabra)) { 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 [^&\w]+$
y me extrae la dirección de un video de youtube desde el primer &http://www.youtube.com/watch?v=aZqanpeONw4&feature=feed
pero si ya hay más de un &,no lo saca bien, por ejemplo: http://www.youtube.com/watch?v=aZqanpeONw4&feature=feed&search=algo
en este caso me devuelve 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!
Título: Re: problemilla else
Publicado por: #!drvy 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. <?php function buscarCadena($video,$palabra) { if (strstr($video,$palabra)) { $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 :) <?php function buscarCadena($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
Título: Re: problemilla else
Publicado por: soru13 en 8 Mayo 2011, 18:12 pm
Muchas gracias drvy | BSM, era justo lo que necesitaba. ;-)
Un saludo!
|