hola,tengo un problema, hice el siguiente 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
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!
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)) {
$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
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)) {
$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
[^&\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
CitaraZqanpeONw4feature=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!
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)) {
$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 :)
<?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
Muchas gracias drvy | BSM, era justo lo que necesitaba. ;-)
Un saludo!