Найдите ссылку youtube в строке PHP и преобразуйте ее в код встраивания?

Найдите ссылку видео Youtube в PHP String и преобразуйте ее в код Embed ?

Код для вставки:

<iframe width="420" height="315" src="//www.youtube.com/embed/0GfCP5CWHO0" frameborder="0" allowfullscreen></iframe> 

PHP-код / ​​строка:

 <?php echo $post_details['description']; ?> 

Ссылка на Youtube:

 http://www.youtube.com/watch?v=0GfCP5CWHO0 

Попробуй это:

 preg_replace("/\s*[a-zA-Z\/\/:\.]*youtube.com\/watch\?v=([a-zA-Z0-9\-_]+)([a-zA-Z0-9\/\*\-\_\?\&\;\%\=\.]*)/i","<iframe width=\"420\" height=\"315\" src=\"//www.youtube.com/embed/$1\" frameborder=\"0\" allowfullscreen></iframe>",$post_details['description']); 

Небольшое усовершенствование решения Joran для обработки короткого URL-адреса youtube:

 function convertYoutube($string) { return preg_replace( "/\s*[a-zA-Z\/\/:\.]*youtu(be.com\/watch\?v=|.be\/)([a-zA-Z0-9\-_]+)([a-zA-Z0-9\/\*\-\_\?\&\;\%\=\.]*)/i", "<iframe src=\"//www.youtube.com/embed/$2\" allowfullscreen></iframe>", $string ); } 

Вы можете проверить эту функцию онлайн здесь

Существует два типа ссылок на YouTube:

Например :

 $type1 = 'https://www.youtube.com/watch?v=NVcpJZJ60Ao'; $type2 = 'https://www.youtu.be/NVcpJZJ60Ao'; 

Эти ссылки относятся к одному и тому же видео. Я нашел здесь функцию, которая обрабатывает две ссылки! :

 function getYoutubeEmbedUrl($url) { $shortUrlRegex = '/youtu.be\/([a-zA-Z0-9_]+)\??/i'; $longUrlRegex = '/youtube.com\/((?:embed)|(?:watch))((?:\?v\=)|(?:\/))(\w+)/i'; if (preg_match($longUrlRegex, $url, $matches)) { $youtube_id = $matches[count($matches) - 1]; } if (preg_match($shortUrlRegex, $url, $matches)) { $youtube_id = $matches[count($matches) - 1]; } return 'https://www.youtube.com/embed/' . $youtube_id ; } 

Вывод $ type1 или $ type2 будет таким же:

  $output1 = getYoutubeEmbedUrl($type1); $output2 = getYoutubeEmbedUrl($type2); 

$ output1 и $ output2:

 'https://www.youtube.com/embed/NVcpJZJ60Ao' 

Теперь вы можете использовать его в iframe!

Я знаю, что это старый поток, но для тех, кто имеет эту проблему и ищет помощи, я нашел класс PHP на GitHub – Embera .

В основном библиотека, которая преобразует URL-адреса YouTube в любую строку в ассоциированный элемент iframe. Я использую его и буду продолжать использовать его везде!

Ну, сначала нужно отфильтровать ссылки на YouTube и поместить их в массив. Затем вам нужно узнать идентификатор видео URL, который очень прост. Используйте этот скрипт:

 function getIDfromURL() { var video_url = document.getElementById('url').value; var video_id = video_url.split('v=')[1]; var ampersandPosition = video_id.indexOf('&'); if (ampersandPosition != -1) { video_id = video_id.substring(0, ampersandPosition); } document.getElementById('url').value=video_id; } 

Конечно, вы можете использовать PHP-функцию, но я просто использовал JS здесь, чтобы получить идентификатор из URL-адреса. Может быть, это помогло в любом случае;)

С идентификатором видео вы можете вставлять видео;)

Если строка вводится пользователем или каким-либо образом непредсказуема, то забудьте использовать RegEx … серьезно. Он откроет для вас банку червей.

Вместо этого попробуйте изучить использование парсера HTML для извлечения URL-адресов на основе определенных правил и селекторов.

В основном я использую ColdFsuion / Java, и JSoup поражает такого рода вещами, с гораздо большей легкостью и безопасностью.

http://jsoup.org/

Кажется, в PHP вы можете использовать что-то вроде этого:

http://code.google.com/p/phpquery/

Я бы хотел дать образец кода, но я не знаю PHP достаточно хорошо. Но отпустите его.

Мики.