Foros del Web » Programando para Internet » PHP »

Saber si url de youtube son validos con php.

Estas en el tema de Saber si url de youtube son validos con php. en el foro de PHP en Foros del Web. Osea.. ya hice eso de detectar urls y saber si es correcta o no.. pero ahora me falta saber si las urls son validas.. osea ...
  #1 (permalink)  
Antiguo 03/10/2012, 14:07
 
Fecha de Ingreso: agosto-2012
Ubicación: M.
Mensajes: 2.031
Antigüedad: 12 años, 4 meses
Puntos: 52
Saber si url de youtube son validos con php.

Osea.. ya hice eso de detectar urls y saber si es correcta o no..
pero ahora me falta saber si las urls son validas..
osea pueden ponerme una url de youtube correctamente, pero nadie me indica que esa url de video exista..
por ejemplo
http://youtu.be/zZyFtzmr-rY?t=1m16s

la id es esta zZyFtzmr-rY

Bueno.. pero quien me garantiza que la id exista de verdad?

http://youtu.be/loquesea176?t=1m16s

va a decir que la id es esta loquesea176
pero esa id no existe..
como saber eso?

de antemano gracias
  #2 (permalink)  
Antiguo 03/10/2012, 15:32
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 16 años, 6 meses
Puntos: 1012
Respuesta: Saber si url de youtube son validos con php.

en la wiki tienes la respuesta
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #3 (permalink)  
Antiguo 03/10/2012, 16:56
 
Fecha de Ingreso: agosto-2012
Ubicación: M.
Mensajes: 2.031
Antigüedad: 12 años, 4 meses
Puntos: 52
Respuesta: Saber si url de youtube son validos con php.

Cita:
Iniciado por IsaBelM Ver Mensaje
en la wiki tienes la respuesta
Muchas gracias Isabel, probare eso :D
  #4 (permalink)  
Antiguo 03/10/2012, 22:57
 
Fecha de Ingreso: agosto-2012
Ubicación: M.
Mensajes: 2.031
Antigüedad: 12 años, 4 meses
Puntos: 52
Respuesta: Saber si url de youtube son validos con php.

Cita:
Iniciado por IsaBelM Ver Mensaje
en la wiki tienes la respuesta
isabel no funciono...

Código PHP:
Ver original
  1. function url($url)//Se le pasa la url
  2. {
  3. $fp=@fopen($url,"r");//Utilizamos fopen para abrir esa url
  4.  
  5.  if($fp){//Si fopen abre la url
  6.  
  7.      return true;
  8.  
  9.  }else{//si no devuelve false
  10.  
  11.      return false;
  12.  }
  13.  
  14. @fclose($fp);//Cerramos la conexión
  15. }  
  16. Para usarla
  17. Código PHP:
  18. $existe=url("http://La_url.com");//Con [url]http://[/url]
  19. if($existe){
  20.     echo "Si existe";
  21. }else{
  22.     echo "No existe";
  23. }


puse

http://www.youtube.com/watch?v=YxbsY5EiSLw&feature=g-vrec

si lo agarro,
arrojo si existe..
luego le cambie una letra

http://www.youtube.com/watch?v=YxbsY5siSLw&feature=g-vrec

y no ya no funciono... me arrojo si existe...

siendo que no existia por que le invente la s

gracias :D
  #5 (permalink)  
Antiguo 03/10/2012, 23:29
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 15 años, 1 mes
Puntos: 168
Respuesta: Saber si url de youtube son validos con php.

Solo a vos no te funciona, a mi si
  #6 (permalink)  
Antiguo 04/10/2012, 00:18
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 4 meses
Puntos: 2237
Respuesta: Saber si url de youtube son validos con php.

fopen() requiere que la directiva allow_url_fopen esté activa (en on) para poder abrir url's. Creo que es mucho más recomendable usar cURL y, aquí en FDW, el buen Abimael subió un excelente aporte al respecto, sólo usa el buscador.
__________________
- León, Guanajuato
- GV-Foto
  #7 (permalink)  
Antiguo 04/10/2012, 05:37
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 16 años, 6 meses
Puntos: 1012
Respuesta: Saber si url de youtube son validos con php.

Cita:
Iniciado por minombreesmm Ver Mensaje
isabel no funciono...
como te ha dicho Triby, allow_url_fopen debe de estar activada. se trataba de ir al manual y leer el primer parámetro. pero no, es más sencillo decir no funcionó
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #8 (permalink)  
Antiguo 04/10/2012, 05:39
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.341
Antigüedad: 14 años, 10 meses
Puntos: 177
Respuesta: Saber si url de youtube son validos con php.

http://www.forosdelweb.com/f18/aport...r-url-1016373/
__________________
la la la
  #9 (permalink)  
Antiguo 04/10/2012, 08:38
 
Fecha de Ingreso: agosto-2012
Ubicación: M.
Mensajes: 2.031
Antigüedad: 12 años, 4 meses
Puntos: 52
Respuesta: Saber si url de youtube son validos con php.

Cita:
Iniciado por rodrigo791 Ver Mensaje
Solo a vos no te funciona, a mi si
como dice triby, ha de ser por la directiva allow_url_fopen
voy a checar eso :D
  #10 (permalink)  
Antiguo 04/10/2012, 08:42
 
Fecha de Ingreso: agosto-2012
Ubicación: M.
Mensajes: 2.031
Antigüedad: 12 años, 4 meses
Puntos: 52
Respuesta: Saber si url de youtube son validos con php.

Cita:
Iniciado por IsaBelM Ver Mensaje
como te ha dicho Triby, allow_url_fopen debe de estar activada. se trataba de ir al manual y leer el primer parámetro. pero no, es más sencillo decir no funcionó
jejes disculpa IsaBelM, de todas formas tenia que hacerlo funcionar(con ayuda de ustedes o san google), y cuando lo lograra aquí expondría cual es mi error como en los otros temas, y claro que te agradezco tu ayuda :D.
fue solo un comentario un poco desesperado de mi parte (lo siento).. checare bien que es lo que falta..
dicen que eso de la directiva de allow_url_fopen
eso ha de estar en el php.ini o en algun archivo, lo intentare modificar.
lo que me preocuparia es que en el hosting no se permite modificar, ni siquiera con
ini_set
.. bueno vere como me va con eso. :D


por cierto, como eso que hago es como un chat..
osea cuando envio la información del usuario "a" hago que el usuario "b" traduzca las urls de vídeo y las muestre con el reproductor de youtube..
y la informacion que envia el usuario "a" no la recibe de la base de datos, si no que yo hago el mismo procedimiento de traduccion de url, pero con javascript, para que el usuario)a) que envió , no necesite hacer la consulta a la base de datos, pues no es necesario ya que la info la envió él.

me pregunto si abra algo parecido a lo de traduccion de url y ver si existe en javascript?(es muy necesario puesto que ambos usuarios tienen que ver exactamente lo mismo)

resumen..
usuario a debe ver lo mismo que el usuario b.
el usuario que envia "a" mira lo enviado con "traduccion de url " javascript.
el usuario que recibe "b" mira lo que le enviaron con "traduccion de url " php.

Última edición por minombreesmm; 04/10/2012 a las 08:51
  #11 (permalink)  
Antiguo 04/10/2012, 09:23
 
Fecha de Ingreso: agosto-2012
Ubicación: M.
Mensajes: 2.031
Antigüedad: 12 años, 4 meses
Puntos: 52
Respuesta: Saber si url de youtube son validos con php.

tambien probare con este :D
  #12 (permalink)  
Antiguo 04/10/2012, 10:00
 
Fecha de Ingreso: agosto-2012
Ubicación: M.
Mensajes: 2.031
Antigüedad: 12 años, 4 meses
Puntos: 52
Respuesta: Saber si url de youtube son validos con php.

Hola gracias, siempre use este...

Código PHP:
Ver original
  1. foreach($urls as $url)
  2.       {
  3.        
  4.           $rs["video"]=$url;
  5.            
  6.           $cadena=substr($url,strlen($url)-11 ,strlen($url));
  7.          
  8.           @$json = json_decode(file_get_contents("http://gdata.youtube.com/feeds/api/videos/" . $cadena . "?v=2&alt=jsonc"), true);
  9.         if (!is_array($json)) {
  10.            
  11.            break;
  12.         }
  13. .
  14. .
  15. .
  16. .

solo para comprobar si era valido :D
ya funciona, ya me funca, como dirian en otro pais.
ahora jejejs viene lo bueno, como hacer eso mismo de checar la url pero en javascript.
y es que tengo dos versiones de traducción, php para el que recibe y javascript para el que envía.
seguire buscando en google, pero si me ayudan se los agradecería mucho :D

jej creo que me diran que uso una variable demás en el código jeejs, pero como ya la tengo así pues así la deje jejs XD

me dio otra curiosidad, y bueno creo que el de Isabel me ayudara en eso, ya que tambien quisiera mostrar miniaturas de paginas, y la forma de hacerlo es saber si la url es validad, supongo que la miniatura se obtiene de un head de la pagina o algo asi.. y que es un estandar, quiero suponer.
de antemano gracias
  #13 (permalink)  
Antiguo 04/10/2012, 10:16
 
Fecha de Ingreso: agosto-2012
Ubicación: M.
Mensajes: 2.031
Antigüedad: 12 años, 4 meses
Puntos: 52
Respuesta: Saber si url de youtube son validos con php.

Cita:
Iniciado por IsaBelM Ver Mensaje
en la wiki tienes la respuesta

No se que paso la otra vez que no funciono, pero lo volvi a probar y si funciona...

ahora tengo dos codigos el tuyo y de truman.
de truman para urls validas de youtube y el tuyo para url de cualquier pagina

solo que mi problema es que convierto los caracteres especiales por lo que no todas las urls las puede leer, yo creo que ese fue un detalle.
algun consejo..

mmm pensare ..

cierto verdad, puedo verificar la url antes de guardar luego limpiar y añadir la url de nuevo... aunque me dejara caracteres volando creo que sera muy tedioso.. cielos!
de antemano gracias...!
  #14 (permalink)  
Antiguo 04/10/2012, 10:41
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 15 años, 1 mes
Puntos: 168
Respuesta: Saber si url de youtube son validos con php.

Trata de no crear varias respuestas si sos el último en hablar, solo edita los temas y listo, saludos
  #15 (permalink)  
Antiguo 04/10/2012, 14:06
 
Fecha de Ingreso: agosto-2012
Ubicación: M.
Mensajes: 2.031
Antigüedad: 12 años, 4 meses
Puntos: 52
Respuesta: Saber si url de youtube son validos con php.

Cita:
Iniciado por rodrigo791 Ver Mensaje
Trata de no crear varias respuestas si sos el último en hablar, solo edita los temas y listo, saludos


problemas con el str_replace


miren tengo este codigo para convertir en hipervinculo cualquier url.

Código PHP:
Ver original
  1. $re=$registroC['comentario'];
  2. //igual tambien cambie el $re por ponerle $registroC directamente ya que imagine que podria ser eso de que se esta modificando y asi.. pero sigue igual..
  3.  
  4. for($c=0;$c<=$i-1;$c++){
  5.               echo $urlList[$c]."<br>";
  6.              echo "antes<br>".$registroC['comentario']."<br>";
  7.                 $registroC['comentario']=str_replace($urlList[$c],"<a href=".$urlList[$c].">".$urlList[$c]."</a><br>",$re);        
  8.              echo "despues<br>".$registroC['comentario']."<br>";
  9.             }

si meto esta url

http://www.forosdelweb.com/f18/extraer-caracteres-variable-php-339927/

me imprime texto plano

pero si meto esta

http://php.net/manual/es/function.strlen.php
me imprime como vinculo así
http://php.net/manual/es/function.strlen.php



esta raro..

no entiendo por que si la urllist contiene lo mismo que el registroC
no la convierteb mm


total y al ultimo lo deje asi


//igual tambien cambie el $re por ponerle $registroC directamente ya que imagine que podria ser eso de que se esta modificando y asi.. pero sigue igual..
Código PHP:
Ver original
  1. for($c=0;$c<=$i-1;$c++){
  2.               echo $urlList[$c]."<br>";
  3.              echo "antes<br>".$registroC['comentario']."<br>";
  4.                 $registroC['comentario']=str_replace($urlList[$c],"<a href=".$urlList[$c].">".$urlList[$c]."</a><br>",$registroC['comentario']);  // se supone que cambiando $re (variable fija)es mas lógico      
  5.              echo "despues<br>".$registroC['comentario']."<br>";
  6.             }

Ojo, si entra al ciclo.. y si hay urls en el array list, pues lo compruebo al imprimir.
de antemano gracias a todos

Última edición por minombreesmm; 04/10/2012 a las 14:15
  #16 (permalink)  
Antiguo 04/10/2012, 15:30
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 4 meses
Puntos: 2237
Respuesta: Saber si url de youtube son validos con php.

Y eso de convertir las URL en enlaces también tiene que ver con verificar la URL de youtube?
__________________
- León, Guanajuato
- GV-Foto
  #17 (permalink)  
Antiguo 04/10/2012, 17:33
 
Fecha de Ingreso: agosto-2012
Ubicación: M.
Mensajes: 2.031
Antigüedad: 12 años, 4 meses
Puntos: 52
Respuesta: Saber si url de youtube son validos con php.

Cita:
Iniciado por Triby Ver Mensaje
Y eso de convertir las URL en enlaces también tiene que ver con verificar la URL de youtube?
Cita:
Iniciado por Triby Ver Mensaje
Y eso de convertir las URL en enlaces también tiene que ver con verificar la URL de youtube?

asi es.. puesto que no solo muestro el video si no su url..
ademas de que no solo la url del video, si no de cualquier url. vamos como en twitter que pones cualquier url y la muestra como link
pero disculpen solo eran las comillas simples..

codigo1
Código PHP:
Ver original
  1. $registroC['comentario']=str_replace($urlList[$c],"<a href='".$urlList[$c]."'>".$urlList[$c]."</a><br>",$re);

ahora de todas formas tengo mas problemas que cuando quiero mostrar varias urls no las muestra por ejemplo...


http://www.youtube.com/watch?v=APBUrMTvqu0&feature=related http://foro.universojuegos.es/thread-11828.html




si hago eso, convierte el video en video y solo muestra el segundo como link y el link del video como texto plano..

mmmm sin embargo si cambio de orden

http://foro.universojuegos.es/thread-11828.html
http://www.youtube.com/watch?v=APBUrMTvqu0&feature=related

si detecta ambas urls


ya probe cambiando lo de codigo1 por esto y ni asi

Código PHP:
Ver original
  1. $urlList[$c]=str_replace($urlList[$c],"<a href='".$urlList[$c]."'>".$urlList[$c]."</a><br>",$urlList[$c]);
  2.                    $registroC['comentario']=$registroC['comentario'].$urlList[$c];
  #18 (permalink)  
Antiguo 04/10/2012, 18:24
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 4 meses
Puntos: 2237
Respuesta: Saber si url de youtube son validos con php.

Wordpress usa esto:

Código PHP:
Ver original
  1. 1454 /**
  2. 1455     * Callback to convert URI match to HTML A element.
  3. 1456     *
  4. 1457     * This function was backported from 2.5.0 to 2.3.2. Regex callback for {@link
  5. 1458     * make_clickable()}.
  6. 1459     *
  7. 1460     * @since 2.3.2
  8. 1461     * @access private
  9. 1462     *
  10. 1463     * @param array $matches Single Regex Match.
  11. 1464     * @return string HTML A element with URI address.
  12. 1465     */
  13. 1466    function _make_url_clickable_cb($matches) {
  14. 1467            $url = $matches[2];
  15. 1468   
  16. 1469            if ( ')' == $matches[3] && strpos( $url, '(' ) ) {
  17. 1470                    // If the trailing character is a closing parethesis, and the URL has an opening parenthesis in it, add the closing parenthesis to the URL.
  18. 1471                    // Then we can let the parenthesis balancer do its thing below.
  19. 1472                    $url .= $matches[3];
  20. 1473                    $suffix = '';
  21. 1474            } else {
  22. 1475                    $suffix = $matches[3];
  23. 1476            }
  24. 1477   
  25. 1478            // Include parentheses in the URL only if paired
  26. 1479            while ( substr_count( $url, '(' ) < substr_count( $url, ')' ) ) {
  27. 1480                    $suffix = strrchr( $url, ')' ) . $suffix;
  28. 1481                    $url = substr( $url, 0, strrpos( $url, ')' ) );
  29. 1482            }
  30. 1483   
  31. 1484            $url = esc_url($url);
  32. 1485            if ( empty($url) )
  33. 1486                    return $matches[0];
  34. 1487   
  35. 1488            return $matches[1] . "<a href=\"$url\" rel=\"nofollow\">$url</a>" . $suffix;
  36. 1489    }
  37. 1490   
  38. 1491    /**
  39. 1492     * Callback to convert URL match to HTML A element.
  40. 1493     *
  41. 1494     * This function was backported from 2.5.0 to 2.3.2. Regex callback for {@link
  42. 1495     * make_clickable()}.
  43. 1496     *
  44. 1497     * @since 2.3.2
  45. 1498     * @access private
  46. 1499     *
  47. 1500     * @param array $matches Single Regex Match.
  48. 1501     * @return string HTML A element with URL address.
  49. 1502     */
  50. 1503    function _make_web_ftp_clickable_cb($matches) {
  51. 1504            $ret = '';
  52. 1505            $dest = $matches[2];
  53. 1506            $dest = 'http://' . $dest;
  54. 1507            $dest = esc_url($dest);
  55. 1508            if ( empty($dest) )
  56. 1509                    return $matches[0];
  57. 1510   
  58. 1511            // removed trailing [.,;:)] from URL
  59. 1512            if ( in_array( substr($dest, -1), array('.', ',', ';', ':', ')') ) === true ) {
  60. 1513                    $ret = substr($dest, -1);
  61. 1514                    $dest = substr($dest, 0, strlen($dest)-1);
  62. 1515            }
  63. 1516            return $matches[1] . "<a href=\"$dest\" rel=\"nofollow\">$dest</a>$ret";
  64. 1517    }
  65. 1518   
  66. 1519    /**
  67. 1520     * Callback to convert email address match to HTML A element.
  68. 1521     *
  69. 1522     * This function was backported from 2.5.0 to 2.3.2. Regex callback for {@link
  70. 1523     * make_clickable()}.
  71. 1524     *
  72. 1525     * @since 2.3.2
  73. 1526     * @access private
  74. 1527     *
  75. 1528     * @param array $matches Single Regex Match.
  76. 1529     * @return string HTML A element with email address.
  77. 1530     */
  78. 1531    function _make_email_clickable_cb($matches) {
  79. 1532            $email = $matches[2] . '@' . $matches[3];
  80. 1533            return $matches[1] . "<a href=\"mailto:$email\">$email</a>";
  81. 1534    }
  82. 1535   
  83. 1536    /**
  84. 1537     * Convert plaintext URI to HTML links.
  85. 1538     *
  86. 1539     * Converts URI, www and ftp, and email addresses. Finishes by fixing links
  87. 1540     * within links.
  88. 1541     *
  89. 1542     * @since 0.71
  90. 1543     *
  91. 1544     * @param string $text Content to convert URIs.
  92. 1545     * @return string Content with converted URIs.
  93. 1546     */
  94. 1547    function make_clickable( $text ) {
  95. 1548            $r = '';
  96. 1549            $textarr = preg_split( '/(<[^<>]+>)/', $text, -1, PREG_SPLIT_DELIM_CAPTURE ); // split out HTML tags
  97. 1550            foreach ( $textarr as $piece ) {
  98. 1551                    if ( empty( $piece ) || ( $piece[0] == '<' && ! preg_match('|^<\s*[\w]{1,20}+://|', $piece) ) ) {
  99. 1552                            $r .= $piece;
  100. 1553                            continue;
  101. 1554                    }
  102. 1555   
  103. 1556                    // Long strings might contain expensive edge cases ...
  104. 1557                    if ( 10000 < strlen( $piece ) ) {
  105. 1558                            // ... break it up
  106. 1559                            foreach ( _split_str_by_whitespace( $piece, 2100 ) as $chunk ) { // 2100: Extra room for scheme and leading and trailing paretheses
  107. 1560                                    if ( 2101 < strlen( $chunk ) ) {
  108. 1561                                            $r .= $chunk; // Too big, no whitespace: bail.
  109. 1562                                    } else {
  110. 1563                                            $r .= make_clickable( $chunk );
  111. 1564                                    }
  112. 1565                            }
  113. 1566                    } else {
  114. 1567                            $ret = " $piece "; // Pad with whitespace to simplify the regexes
  115. 1568   
  116. 1569                            $url_clickable = '~
  117. 1570                                    ([\\s(<.,;:!?])                                        # 1: Leading whitespace, or punctuation
  118. 1571                                    (                                                      # 2: URL
  119. 1572                                            [\\w]{1,20}+://                                # Scheme and hier-part prefix
  120. 1573                                            (?=\S{1,2000}\s)                               # Limit to URLs less than about 2000 characters long
  121. 1574                                            [\\w\\x80-\\xff#%\\~/@\\[\\]*(+=&$-]*+         # Non-punctuation URL character
  122. 1575                                            (?:                                            # Unroll the Loop: Only allow puctuation URL character if followed by a non-punctuation URL character
  123. 1576                                                    [\'.,;:!?)]                            # Punctuation URL character
  124. 1577                                                    [\\w\\x80-\\xff#%\\~/@\\[\\]*(+=&$-]++ # Non-punctuation URL character
  125. 1578                                            )*
  126. 1579                                    )
  127. 1580                                    (\)?)                                                  # 3: Trailing closing parenthesis (for parethesis balancing post processing)
  128. 1581                            ~xS'; // The regex is a non-anchored pattern and does not have a single fixed starting character.
  129. 1582                                  // Tell PCRE to spend more time optimizing since, when used on a page load, it will probably be used several times.
  130. 1583   
  131. 1584                            $ret = preg_replace_callback( $url_clickable, '_make_url_clickable_cb', $ret );
  132. 1585   
  133. 1586                            $ret = preg_replace_callback( '#([\s>])((www|ftp)\.[\w\\x80-\\xff\#$%&~/.\-;:=,?@\[\]+]+)#is', '_make_web_ftp_clickable_cb', $ret );
  134. 1587                            $ret = preg_replace_callback( '#([\s>])([.0-9a-z_+-]+)@(([0-9a-z-]+\.)+[0-9a-z]{2,})#i', '_make_email_clickable_cb', $ret );
  135. 1588   
  136. 1589                            $ret = substr( $ret, 1, -1 ); // Remove our whitespace padding.
  137. 1590                            $r .= $ret;
  138. 1591                    }
  139. 1592            }
  140. 1593   
  141. 1594            // Cleanup of accidental links within links
  142. 1595            $r = preg_replace( '#(<a( [^>]+?>|>))<a [^>]+?>([^>]+?)</a></a>#i', "$1$3</a>", $r );
  143. 1596            return $r;
  144. 1597    }

Elimina los números de línea y adáptalo para agregar la opción de los videos.
__________________
- León, Guanajuato
- GV-Foto
  #19 (permalink)  
Antiguo 04/10/2012, 20:58
 
Fecha de Ingreso: agosto-2012
Ubicación: M.
Mensajes: 2.031
Antigüedad: 12 años, 4 meses
Puntos: 52
Respuesta: Saber si url de youtube son validos con php.

vuelvo a Reeditar.. ya encontre el problema de &feature, es por la &, que se confunde con segundo parámetro algo así....

mi problema ahora es la funcion
que me dice que esta url existe
http://www.youtube.com/v/APfUrMTvqu0&feature=related

y si efectivamente si doy clic me lleva al youtube, el problema es que youtube me dice que el video no existe.. si no prueben y veran..
la funcion que detecta si el video de youtube existe es esta es la siguiente.



Código PHP:
Ver original
  1. @$json = json_decode(file_get_contents("http://gdata.youtube.com/feeds/api/videos/".$cadena."?v=2&alt=jsonc"), true);
  2.             if (is_array($json)) {
  3.  
  4. .
  5. .
  6. .

en cadena meto la id que verifica el video...
pero si meto una id invalida de todas formas entra a la condicion... se supone que si no existe ese vídeo allí no debe entrar...

Y por cierto.. aparte de eso... bueno creo que mejor hago otro tema para ese...

Última edición por minombreesmm; 05/10/2012 a las 13:02
  #20 (permalink)  
Antiguo 05/10/2012, 13:04
 
Fecha de Ingreso: agosto-2012
Ubicación: M.
Mensajes: 2.031
Antigüedad: 12 años, 4 meses
Puntos: 52
Respuesta: Saber si url de youtube son validos con php.

Cita:
Iniciado por Triby Ver Mensaje
Wordpress usa esto:

Código PHP:
Ver original
  1. 1454 /**
  2. 1455     * Callback to convert URI match to HTML A element.
  3. 1456     *
  4. 1457     * This function was backported from 2.5.0 to 2.3.2. Regex callback for {@link
  5. 1458     * make_clickable()}.
  6. 1459     *
  7. 1460     * @since 2.3.2
  8. 1461     * @access private
  9. 1462     *
  10. 1463     * @param array $matches Single Regex Match.
  11. 1464     * @return string HTML A element with URI address.
  12. 1465     */
  13. 1466    function _make_url_clickable_cb($matches) {
  14. 1467            $url = $matches[2];
  15. 1468   
  16. 1469            if ( ')' == $matches[3] && strpos( $url, '(' ) ) {
  17. 1470                    // If the trailing character is a closing parethesis, and the URL has an opening parenthesis in it, add the closing parenthesis to the URL.
  18. 1471                    // Then we can let the parenthesis balancer do its thing below.
  19. 1472                    $url .= $matches[3];
  20. 1473                    $suffix = '';
  21. 1474            } else {
  22. 1475                    $suffix = $matches[3];
  23. 1476            }
  24. 1477   
  25. 1478            // Include parentheses in the URL only if paired
  26. 1479            while ( substr_count( $url, '(' ) < substr_count( $url, ')' ) ) {
  27. 1480                    $suffix = strrchr( $url, ')' ) . $suffix;
  28. 1481                    $url = substr( $url, 0, strrpos( $url, ')' ) );
  29. 1482            }
  30. 1483   
  31. 1484            $url = esc_url($url);
  32. 1485            if ( empty($url) )
  33. 1486                    return $matches[0];
  34. 1487   
  35. 1488            return $matches[1] . "<a href=\"$url\" rel=\"nofollow\">$url</a>" . $suffix;
  36. 1489    }
  37. 1490   
  38. 1491    /**
  39. 1492     * Callback to convert URL match to HTML A element.
  40. 1493     *
  41. 1494     * This function was backported from 2.5.0 to 2.3.2. Regex callback for {@link
  42. 1495     * make_clickable()}.
  43. 1496     *
  44. 1497     * @since 2.3.2
  45. 1498     * @access private
  46. 1499     *
  47. 1500     * @param array $matches Single Regex Match.
  48. 1501     * @return string HTML A element with URL address.
  49. 1502     */
  50. 1503    function _make_web_ftp_clickable_cb($matches) {
  51. 1504            $ret = '';
  52. 1505            $dest = $matches[2];
  53. 1506            $dest = 'http://' . $dest;
  54. 1507            $dest = esc_url($dest);
  55. 1508            if ( empty($dest) )
  56. 1509                    return $matches[0];
  57. 1510   
  58. 1511            // removed trailing [.,;:)] from URL
  59. 1512            if ( in_array( substr($dest, -1), array('.', ',', ';', ':', ')') ) === true ) {
  60. 1513                    $ret = substr($dest, -1);
  61. 1514                    $dest = substr($dest, 0, strlen($dest)-1);
  62. 1515            }
  63. 1516            return $matches[1] . "<a href=\"$dest\" rel=\"nofollow\">$dest</a>$ret";
  64. 1517    }
  65. 1518   
  66. 1519    /**
  67. 1520     * Callback to convert email address match to HTML A element.
  68. 1521     *
  69. 1522     * This function was backported from 2.5.0 to 2.3.2. Regex callback for {@link
  70. 1523     * make_clickable()}.
  71. 1524     *
  72. 1525     * @since 2.3.2
  73. 1526     * @access private
  74. 1527     *
  75. 1528     * @param array $matches Single Regex Match.
  76. 1529     * @return string HTML A element with email address.
  77. 1530     */
  78. 1531    function _make_email_clickable_cb($matches) {
  79. 1532            $email = $matches[2] . '@' . $matches[3];
  80. 1533            return $matches[1] . "<a href=\"mailto:$email\">$email</a>";
  81. 1534    }
  82. 1535   
  83. 1536    /**
  84. 1537     * Convert plaintext URI to HTML links.
  85. 1538     *
  86. 1539     * Converts URI, www and ftp, and email addresses. Finishes by fixing links
  87. 1540     * within links.
  88. 1541     *
  89. 1542     * @since 0.71
  90. 1543     *
  91. 1544     * @param string $text Content to convert URIs.
  92. 1545     * @return string Content with converted URIs.
  93. 1546     */
  94. 1547    function make_clickable( $text ) {
  95. 1548            $r = '';
  96. 1549            $textarr = preg_split( '/(<[^<>]+>)/', $text, -1, PREG_SPLIT_DELIM_CAPTURE ); // split out HTML tags
  97. 1550            foreach ( $textarr as $piece ) {
  98. 1551                    if ( empty( $piece ) || ( $piece[0] == '<' && ! preg_match('|^<\s*[\w]{1,20}+://|', $piece) ) ) {
  99. 1552                            $r .= $piece;
  100. 1553                            continue;
  101. 1554                    }
  102. 1555   
  103. 1556                    // Long strings might contain expensive edge cases ...
  104. 1557                    if ( 10000 < strlen( $piece ) ) {
  105. 1558                            // ... break it up
  106. 1559                            foreach ( _split_str_by_whitespace( $piece, 2100 ) as $chunk ) { // 2100: Extra room for scheme and leading and trailing paretheses
  107. 1560                                    if ( 2101 < strlen( $chunk ) ) {
  108. 1561                                            $r .= $chunk; // Too big, no whitespace: bail.
  109. 1562                                    } else {
  110. 1563                                            $r .= make_clickable( $chunk );
  111. 1564                                    }
  112. 1565                            }
  113. 1566                    } else {
  114. 1567                            $ret = " $piece "; // Pad with whitespace to simplify the regexes
  115. 1568   
  116. 1569                            $url_clickable = '~
  117. 1570                                    ([\\s(<.,;:!?])                                        # 1: Leading whitespace, or punctuation
  118. 1571                                    (                                                      # 2: URL
  119. 1572                                            [\\w]{1,20}+://                                # Scheme and hier-part prefix
  120. 1573                                            (?=\S{1,2000}\s)                               # Limit to URLs less than about 2000 characters long
  121. 1574                                            [\\w\\x80-\\xff#%\\~/@\\[\\]*(+=&$-]*+         # Non-punctuation URL character
  122. 1575                                            (?:                                            # Unroll the Loop: Only allow puctuation URL character if followed by a non-punctuation URL character
  123. 1576                                                    [\'.,;:!?)]                            # Punctuation URL character
  124. 1577                                                    [\\w\\x80-\\xff#%\\~/@\\[\\]*(+=&$-]++ # Non-punctuation URL character
  125. 1578                                            )*
  126. 1579                                    )
  127. 1580                                    (\)?)                                                  # 3: Trailing closing parenthesis (for parethesis balancing post processing)
  128. 1581                            ~xS'; // The regex is a non-anchored pattern and does not have a single fixed starting character.
  129. 1582                                  // Tell PCRE to spend more time optimizing since, when used on a page load, it will probably be used several times.
  130. 1583   
  131. 1584                            $ret = preg_replace_callback( $url_clickable, '_make_url_clickable_cb', $ret );
  132. 1585   
  133. 1586                            $ret = preg_replace_callback( '#([\s>])((www|ftp)\.[\w\\x80-\\xff\#$%&~/.\-;:=,?@\[\]+]+)#is', '_make_web_ftp_clickable_cb', $ret );
  134. 1587                            $ret = preg_replace_callback( '#([\s>])([.0-9a-z_+-]+)@(([0-9a-z-]+\.)+[0-9a-z]{2,})#i', '_make_email_clickable_cb', $ret );
  135. 1588   
  136. 1589                            $ret = substr( $ret, 1, -1 ); // Remove our whitespace padding.
  137. 1590                            $r .= $ret;
  138. 1591                    }
  139. 1592            }
  140. 1593   
  141. 1594            // Cleanup of accidental links within links
  142. 1595            $r = preg_replace( '#(<a( [^>]+?>|>))<a [^>]+?>([^>]+?)</a></a>#i', "$1$3</a>", $r );
  143. 1596            return $r;
  144. 1597    }

Elimina los números de línea y adáptalo para agregar la opción de los videos.
Disculpa en el parametro Matches debo poner la cadena de texto que puede contener urls verdad?

Etiquetas: son, url, youtube, validar
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 14:34.