Foros del Web » Programando para Internet » PHP »

Obtener $_GET desde un form

Estas en el tema de Obtener $_GET desde un form en el foro de PHP en Foros del Web. Mi problema es el siguiente: estoy montando un script en el cual se ingresa un URL de YouTube y obtiene el ID del playlist. Por ...
  #1 (permalink)  
Antiguo 16/09/2012, 00:49
Avatar de the_glz  
Fecha de Ingreso: febrero-2011
Ubicación: Angol
Mensajes: 9
Antigüedad: 13 años, 2 meses
Puntos: 2
Pregunta Obtener $_GET desde un form

Mi problema es el siguiente: estoy montando un script en el cual se ingresa un URL de YouTube y obtiene el ID del playlist.

Por ejemplo: el usuario ingresa
Código HTML:
http://www.youtube.com/watch?v=9bZkp7q19f0&list=PLEC422D53B7588DC7&index=0&feature=plcp
y el script devolverá
Código HTML:
PLEC422D53B7588DC7
.

La función que actualmente uso para esto es la siguiente:
Código PHP:
Ver original
  1. $exp = "/list\/?=?([0-9A-Za-z-_]{18})/is"; // Parámetros de busqueda del ID
  2.     preg_match_all($exp, $request, $matches); // Extracción del ID desde la URL
  3.     $id = $matches[1][0]; // ID del playlist
  4.     if(!empty($id)) {
  5.         redir_to('play', $id);
  6.     } else {
  7.         redir_to('error', 406);
  8.     }

El script funciona bien, pero como se puede ver en el código, hago que PHP "cuente" los caracteres que hay desde playlist= (18, en total) y los devuelva. Pero se que YouTube no siempre puede usar 18 caracteres para la ID de un playlist y, en tal caso, devolverá o caracteres que no pertenecen al ID u omitirá caracteres y devolverá un error.

Lo otro, es que tenía entendido que preg_match_all() sobrecarga un poco el servidor, así que quiero evitar un poco su uso.

Agradecería cualquier ayuda, sugerencia, y demás.
  #2 (permalink)  
Antiguo 16/09/2012, 03:33
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Obtener $_GET desde un form

En lugar de forzar la longitud a 18 caracteres, debes especificar que finalice la búsqueda al encontrar & o donde termine la cadena. Para más info sobre el tema, revisa: http://www.forosdelweb.com/f18/aport...s-pcre-646110/
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 16/09/2012, 13:55
Avatar de the_glz  
Fecha de Ingreso: febrero-2011
Ubicación: Angol
Mensajes: 9
Antigüedad: 13 años, 2 meses
Puntos: 2
Respuesta: Obtener $_GET desde un form

¿Me creerías si te dijera que busque en el foro y no lo encontré? Ahora me siento torpe por mi consulta xD

¡Muchisimas gracias! :)
  #4 (permalink)  
Antiguo 16/09/2012, 17:11
 
Fecha de Ingreso: febrero-2009
Ubicación: Medellín
Mensajes: 81
Antigüedad: 15 años, 2 meses
Puntos: 1
Respuesta: Obtener $_GET desde un form

Prueba la manera larga pero sencilla y rápida: uso de cadenas.

$url="http://www.youtube.com/watch?v=I7VTjE81N5Y";

if(strpos($url,"=") > 0)
$desde = strpos($url,"=");
else
$desde = 15;

$id = substr($url, $desde+1, 11);
  #5 (permalink)  
Antiguo 16/09/2012, 17:45
Avatar de pzin
Moderata 😈
 
Fecha de Ingreso: julio-2002
Ubicación: Islas Canarias
Mensajes: 10.488
Antigüedad: 21 años, 8 meses
Puntos: 2114
Respuesta: Obtener $_GET desde un form

Cita:
Iniciado por parcialbook Ver Mensaje
pero sencilla y rápida
Lo sencillo y rápido suele dar problemas complejos y lentos de resolver. Más fácil, intentar mejorar y afinar.
__________________
(:
  #6 (permalink)  
Antiguo 16/09/2012, 18:03
Avatar de the_glz  
Fecha de Ingreso: febrero-2011
Ubicación: Angol
Mensajes: 9
Antigüedad: 13 años, 2 meses
Puntos: 2
Respuesta: Obtener $_GET desde un form

@parcialbook: pero seguiría contando los caracteres y precisamente eso quiero evitar, ya que (considerando la cantidad bestial de videos que se suben cada día a YT) en algún momento no serán 15 caracteres (o 18, para PlayList) sino que serán más y este tipo de códigos darán problemas.

Estoy intentando con el mensaje que me ha dejado @Triby. Aún no lo logro, pero creo que es cuestión de más practica y más ensayos. Cuando obtenga algún resultado, volveré aquí para publicarlo y dejar la solución en caso de que alguien más le sea útil.

De igual manera: ¡Gracias caballeros! :D

Etiquetas: parametro, youtube
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:37.