Foros del Web » Programando para Internet » PHP »

como cortar una URL

Estas en el tema de como cortar una URL en el foro de PHP en Foros del Web. pero atencion, esta no es una URL normal me explico: tengo esta funcion Código PHP: function  getYouTubeFlv ( $url ){ if ( $html  =  file_get_contents ( ...
  #1 (permalink)  
Antiguo 06/01/2008, 19:04
 
Fecha de Ingreso: junio-2006
Mensajes: 84
Antigüedad: 17 años, 10 meses
Puntos: 1
como cortar una URL

pero atencion, esta no es una URL normal

me explico:
tengo esta funcion

Código PHP:
function getYouTubeFlv($url){
if (
$html file_get_contents($url)){
if(
preg_match_all("/\b(?:video_id)\b:.*/"$html$matches)){
$ref $matches[0][0];
preg_match_all("/\'[^\'\\\\\r\n]*(?:\\\\.[^\'\\\\\r\n]*)*\'/"$ref$match);
$id1 str_replace("'"""$match[0][0]);
$id2 str_replace("'"""$match[0][2]);
$id3 str_replace("'"""$match[0][3]);
$id $id1.'&t='.$id2.'&sk='.$id3;
$url 'http://youtube.com/get_video.php?video_id='.$id;
$url get_headers($url);
//$url = print_r($url);
echo "$url[8]<br>";

$busqueda = array ('/Location: /');
$reemplazar = array ('');
$texto preg_replace($busqueda$reemplazar$url[8]);  //NO FUNCIONA
echo $texto;

//$url = trim($url[8],"Location:");   //NO FUNCIONA
//$url = substr($url,10);  //NO FUNCIONA
echo "$url<br>";
return 
$url;
}
return 
false;
}

cuando llamo a la funcion getYoutubeFlv con una direccion de youtube como http://es.youtube.com/watch?v=cGa4vGJ2O7w esta, coge el codigo cGa4vGJ2O7w, obtiene unos ids, y con get_headers, (array) consigue en el $url[8] la direccion de descarga del archivo. Problema... que viene así:
Location: http://chi-v252.chi.youtube.com/get_...id=cGa4vGJ2O7w

yo quiero quitar de delante ese Location:

he probado con substr y no va, con trim y no va, con preg_replace y no va...
es decir, si pongo:

Código PHP:
$url"Location: http://chi-v252.chi.youtube.com/get_video?video_id=cGa4vGJ2O7w";
$url trim($url,"Location: "); 
funciona, pero en el momento en el que pongo


Código PHP:
$url trim([B]$url[8][/B],"Location: "); 
ya no va...

Por que?'
como lo arreglo
  #2 (permalink)  
Antiguo 06/01/2008, 19:37
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: como cortar una URL

Prueba con strstr():

Código PHP:
$url"Location: http://chi-v252.chi.youtube.com/get_video?video_id=cGa4vGJ2O7w";
$url strstr($url"Location: h"); 
Un saludo,
  #3 (permalink)  
Antiguo 06/01/2008, 20:11
 
Fecha de Ingreso: junio-2006
Mensajes: 84
Antigüedad: 17 años, 10 meses
Puntos: 1
Re: como cortar una URL

nada,

echo "$url";

y sale vacio
  #4 (permalink)  
Antiguo 06/01/2008, 20:40
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: como cortar una URL

A mi si me va bien colocando:

Código PHP:
$url "Location: http://chi-v252.chi.youtube.com/get_video?video_id=cGa4vGJ2O7w";
$url strstr($url"http://");
 
echo 
$url
Otra forma sería:

Código PHP:
$url "Location: http://chi-v252.chi.youtube.com/get_video?video_id=cGa4vGJ2O7w";
$url substr($url,10,strlen($url)-9);
 
echo 
$url
Igual funciona

Un saludo,
  #5 (permalink)  
Antiguo 07/01/2008, 04:46
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 7 meses
Puntos: 41
Re: como cortar una URL

Es raro... yo copié tu código tal cual y me funciona bien con todas las opciones que propones. Excepto con la de substr() que debería tener como parámetro $url[8] y no $url.

Te aconsejaría que utilices nombres diferentes de variables. Sobretodo si $url primero es una cadena que entra como parámetro, luego otra cadena distinta, luego un array (get_headers) y luego una simple cadena otra vez. Esto no tiene nada que ver, pero es por una cuestión de orden.

Además, de todas las opciones, creo que la mejor es directamente cortar la cadena con substr, que no hace comparaciones de ningún tipo.

Haz un archivo prueba.php que solamente contenga esto:
Código PHP:
<?php
error_reporting
(E_ALL);

function 
getYouTubeFlv($url){
    
    if( 
$html file_get_contents($url) ){
        if( 
preg_match_all("/\b(?:video_id)\b:.*/"$html$matches) ){
            
$ref $matches[0][0];
            
preg_match_all("/\'[^\'\\\\\r\n]*(?:\\\\.[^\'\\\\\r\n]*)*\'/"$ref$match);
            
$id1 str_replace("'"""$match[0][0]);
            
$id2 str_replace("'"""$match[0][2]);
            
$id3 str_replace("'"""$match[0][3]);
            
$id $id1.'&t='.$id2.'&sk='.$id3;
            
            
$url_video 'http://youtube.com/get_video.php?video_id='.$id;
            
$url_headers get_headers($url_video);

            
$url_flv substr$url_headers[8],10 );
            return 
$url_flv;
        }
    return 
false;
    }
}  

// Probando la función
if( $flv getYouTubeFlv("http://es.youtube.com/watch?v=cGa4vGJ2O7w") ){
    echo 
$flv;    
}
?>
Solamente le cambié el nombre a algunas variables para que se entiendan mejor y dejé el substr(). Con el error_reporting() nos aseguramos de que te aparezcan los mensajes de error.

Simplemente recuerda que get_headers() está disponible desde PHP5.

Saludos

Última edición por jpinedo; 07/01/2008 a las 05:04
  #6 (permalink)  
Antiguo 07/01/2008, 06:58
 
Fecha de Ingreso: junio-2006
Mensajes: 84
Antigüedad: 17 años, 10 meses
Puntos: 1
Re: como cortar una URL

Cita:
Excepto con la de substr() que debería tener como parámetro $url[8] y no $url.
Si, eso es por que lo cambié después de probarlo.


Bueno, con el script de jpinedo aparte me va de maravilla.

Por que puede fallar entonces en mi script?

si lo pongo como include funcionará?

ahora os digo
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 23:18.