2014-10-09 2 views
0

что мне нужноКак Разобрать You Tube код в PHP

  • я нужен 11-значный код, который должен быть добавлен в YOU TUBE ссылке.

    like www.youtube.com/embed/XzqagJTsNrc. 
    

Исходный код

$url= htmlentities($this->linkify($row['tweetText'])); 

$youtube=explode(' ',$url). 

выходной массив.

Array 
(
[0] => VW 
[1] => @ 
[2] => European 
[3] => Motor 
[4] => Show 
[5] => Brussels 
[6] => - 
[7] => Behind 
[8] => the 
[9] => scene 
[10] => (part 
[11] => 1): 
[12] =>  <a 
[13] => class="twtlnk" 
[14] => rel="nofollow" 
[15] => href="http://youtu.be/XzqagJTsNrc" 
[16] => target=\"_blank\">http://youtu.be/XzqagJTsNrc</a>  
[17] => via 
[18] =>  <a 
[19] => class="twthand" 
[20] => href="https://twitter.com/youtube" 
[21] => rel="nofollow" 
[22] => target=\"_blank\" 
[23] => >@youtube</a> 
) 

я попытался с помощью регулярных выражений

  $text = preg_replace('~ 

      https?://   # Required scheme. Either http or https. 
      (?:[0-9A-Z-]+\.)? # Optional subdomain. 
      (?:    # Group host alternatives. 
      youtu\.be/  # Either youtu.be, 
      | youtube   # or youtube.com or 
      (?:-nocookie)? # youtube-nocookie.com 
      \.com   # followed by 
      \S*    # Allow anything up to VIDEO_ID, 
      [^\w\s-]  # but char before ID is non-ID char. 
      )     # End host alternatives. 
      ([\w-]{11})  # $1: VIDEO_ID is exactly 11 chars. 
      (?=[^\w-]|$)  # Assert next char is non-ID or EOS. 
      (?!    # Assert URL is not pre-linked. 
      [?=&+%\w.-]* # Allow URL (query) remainder. 
      (?:    # Group pre-linked alternatives. 
      [\'"][^<>]*> # Either inside a start tag, 
      | </a>   # or inside <a> element text contents. 
      )    # End recognized pre-linked alts. 
      )     # End negative lookahead assertion. 
      [?=&+%\w.-]*  # Consume any URL (query) remainder. 
      ~ix', 
      '<a href="http://www.youtube.com/watch?v=$1">$1</a>', 
      $youtube); 

      print_r($text); 

массив вернуться

Array 
(
[0] => VW 
[1] => @ 
[2] => European 
[3] => Motor 
[4] => Show 
[5] => Brussels 
[6] => - 
[7] => Behind 
[8] => the 
[9] => scene 
[10] => (part 
[11] => 1): 
[12] => &amp;nbsp;&lt;a 
[13] => class=&quot;twtlnk&quot; 
[14] => rel=&quot;nofollow&quot; 
[15] => href=&quot;<a href="http://www.youtube.com/watch?v=XzqagJTsNrc">XzqagJTsNrc</a>; 
[16] => target=\&quot;_blank\&quot;&gt;<a href="http://www.youtube.com/watch?v=XzqagJTsNrc">XzqagJTsNrc</a>;/a&gt;&nbsp; 
[17] => via 
[18] => &amp;nbsp;&lt;a 
[19] => class=&quot;twthand&quot; 
[20] => href=&quot;https://twitter.com/youtube&quot; 
[21] => rel=&quot;nofollow&quot; 
[22] => target=\&quot;_blank\&quot; 
[23] => &gt;@youtube&lt;/a&gt; 

)

  • я просто нужно получить XzqagJTsNrc; при выполнении print_r ($ text [15]);
  • выводит HREF = "XzqagJTsNrc;
  • , но мне нужно только XzqagJTsNrc (11 цифр charcter)

    how to parse href="XzqagJTsNrc; (href =" ;) 
    
+0

я спросил HREF = "XzqagJTsNrc; как удалить href = "и; из кода – user2818060

+0

, что означает синтаксический анализ кода youtube, если вы удалите' href = "' и ';' только код youtube оставлен :) – Saqueib

+0

yup that i want – user2818060

ответ

1

Вы можете сделать это. с использованием preg_match

$url = $text[15]; 

if (preg_match('%(?:youtube(?:-nocookie)?\.com/(?:[^/]+/.+/|(?:v|e(?:mbed)?)/|.*[?&]v=)|youtu\.be/)([^"&?/ ]{11})%i', $url, $match)) { 
    $video_id = $match[1]; 
} 

echo($video_id); 

Это будет не только соответствовать YouTube, но еще идентификаторами, а

0

Простой, как:

$var = 'href="XzqagJTsNrc;'; 
$youtube_id = substr($var, 6, 11); 
0

Если вам нужно только XzqagJTsNrc, а затем использовать basename:

$link = 'http://www.youtube.com/embed/XzqagJTsNrc'; 
echo basename($link); // XzqagJTsNrc 
Смежные вопросы