Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales
Autor
|
Tema: problemilla else (Leído 519 veces)
|
soru13
Desconectado
Mensajes: 211
|
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!
|
|
|
|
|
En línea
|
|
|
|
drvy | BSM
Desconectado
Mensajes: 1.129
badstupidmonkey
|
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
|
|
|
|
|
En línea
|
|
|
|
soru13
Desconectado
Mensajes: 211
|
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 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
Mensajes: 1.129
badstupidmonkey
|
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
|
|
|
|
|
En línea
|
|
|
|
soru13
Desconectado
Mensajes: 211
|
Muchas gracias drvy | BSM, era justo lo que necesitaba.  Un saludo!
|
|
|
|
|
En línea
|
|
|
|
|
|