Intereting Posts
Получение ошибки «Авторизованный токен от поставщика услуг не соответствует предоставленным сведениям о токенах запроса» в трехзначной аутентификации в google api Вычисление средней точки в два раза Я хочу знать, как я могу получить значение из этого print_r, показанного ниже Zend Framework 2: Как создать собственный User-навигатор для ZfcUser Как выбрать библиотеку аутентификации для CodeIgniter? PHP Json Encode PDO :: FETCH_ASSOC PHP Доступ к частной собственности дочернего объекта в родительском Разбор доменного имени только из URL-адреса в PHP PHP 7, Symfony 3: Fatal error 1 абстрактный метод и поэтому должен быть объявлен абстрактным или реализовать остальные методы PHP-карта с именем array для другого именованного массива Каков наилучший способ сериализации SVG из DOM клиента? Как читать URL-адрес юникода с PHP? как включить include (phpfile) в переменную? PHP CURL PUT из пути к файлу Получить URL-адрес уменьшенных изображений изображений в WooCommerce

предварительная установка встроенного видео в YouTube

На нашем форуме мы в настоящее время заменяем все ссылки на YouTube со встроенными объектами, благодаря следующему ответу:

Как найти все идентификаторы видео YouTube в строке с помощью регулярного выражения?

Беда в том, что многие из наших пользователей хотят опубликовать ссылку непосредственно на время участия в видео. Например:

http://www.youtube.com/watch?v=jECIv7zlD4c&feature=player_embedded#t=1m15s

Обратите внимание на «# t = 1m15s»

В соответствии с документацией youtube, когда вы добавляете время начала в видео, требуется параметр «start», вы не можете использовать строку «1m15s». «start» – это значение, основанное на количестве секунд.

<object width="425" height="344"> <param name="movie" value="http://www.youtube.com/v/jECIv7zlD4c?fs=1&start=75"</param> <param name="allowFullScreen" value="true"></param> <param name="allowScriptAccess" value="always"></param> <embed src="http://www.youtube.com/v/jECIv7zlD4c?fs=1&start=75" type="application/x-shockwave-flash" allowscriptaccess="always" width="425" height="344"> </embed> </object> 

Является ли их способ заменить '# 1m15s' в regex с '& start = 75'?

Если нет, то как бы вы предположили, что это будет сделано с PHP, так что он будет рекурсивно строить объекты в сообщении на форуме (иногда люди публикуют несколько видео-ссылок YouTube)?

preg_replace используется для управления строкой. В вашем случае вы должны сделать некоторые вещи перед заменой.

Возможно, вы должны попытаться использовать вместо preg_replace_callback , давая обратный вызов, который сделает расчет (X * 60 + Y).

 function sumMinSec($matches) { $minSecMatches = array(); preg_match("/([0-9]*)m([0-9]*)s/", $matches[0], $minSecMatches); return "&start=" . ($minSecMatches[1] * 60 + $minSecMatches[2]); } 

а затем вызовите что-то вроде:

 $url = "http://www.youtube.com/v/jECIv7zlD4c?fs=1#1m23s"; echo preg_replace_callback("/#([0-9]*m[0-9]*s)/", "sumMinSec", $url); 

Тогда результат:

 http://www.youtube.com/v/jECIv7zlD4c?fs=1&start=83