problemilla else

Iniciado por soru13, 8 Mayo 2011, 14:28 PM

0 Miembros y 1 Visitante están viendo este tema.

soru13

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

Código (php) [Seleccionar]
<?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 (php) [Seleccionar]
else

Código (php) [Seleccionar]
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) [Seleccionar]
<?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!


#!drvy

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) [Seleccionar]
<?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

soru13

#2
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) [Seleccionar]
<?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 (php) [Seleccionar]
[^&\w]+$

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

Código (php) [Seleccionar]
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 (php) [Seleccionar]
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!

#!drvy

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) [Seleccionar]
<?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) [Seleccionar]
<?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

soru13

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

Un saludo!