У меня есть внешний файл, который отображает видео на моем сайте с использованием динамического URL-адреса с токеном и датой истечения срока действия. Это выглядит так:
https://www.thevideositeurl.com/embed/231231/
Я добавляю его на свою страницу так:
$vid = 231231;
$url = file_get_contents("https://www.thevideositeurl.com/embed/{$vid}/")
echo $url ;
Затем он отображает приведенный ниже javascript, а также некоторые html
<script type = "text/javascript">
var sources = [
{
type:"video/mp4",
src:"https://cdn.myvenue.com/media/clips/491355/clip_saple_hd.mp4?expire=1525179619&token=1e52da03af581764724c0e2c428a9faa",
res:"VideoSample",
label: "VideoSample"
}
];
videojs("video", {
nativeControlsForTouch: true,
autoplay: false,
controls: true,
width:'100%',
fluid: true,
loop: false,
muted: false,
poster: "https://cdn.static.myvenue.com/media/assets/images/image.jpg",
etc., etc., etc.
Проблема в том, что мне просто нужно получить URL-адрес видео (помните: он динамический):
https://cdn.myvenue.com/media/clips/491355/clip_saple_hd.mp4?expire=1525179619&token=1e52da03af581764724c0e2c428a9faa
Это возможно?
скрипт этого типа имеет атрибут textContent
. ты можешь это использовать?
@Mark_M возвращает строку с этим скриптом (включая теги <script>)
@Mark_M Я обновил свой вопрос. Не могли бы вы посмотреть, поможет ли это?
Предполагая, что вы хотите перейти к первому объекту (или, возможно, у вас есть только один) в вашем массиве sources
, вы можете получить URL-адрес видео следующим образом;
var videoURL = sources[0].src;
Update // for PHP code, based on a modified version of @Moti's regex
echo $url;
preg_match('/https://cdn\.myvenue\.com/[^\"]*/', $url, $matches, PREG_OFFSET_CAPTURE);
$videoURL = ($matches[0][0]);
echo $videoURL;
Не могли бы вы уточнить это?
Как включить "динамический URL" на свой сайт (или страницу)?
таким образом: $vid = 231231; $url = file_get_contents("https://www.thevideositeurl.com/embed/{$vid}/") echo $url ;
Затем я отображаю упоминание javascript, а также некоторые html
Вы используете PHP на стороне сервера? Где вам нужен video URL
, на стороне сервера или на стороне клиента?
Мне это нужно на стороне сервера
Затем @Moti ответил на ваш вопрос, но, поскольку вы echo $url ;
, я бы дал video URL
другое имя, например $videoURL = preg_match ("/https://cdn\.myvenue\.com/[^\"]*/",$url)[0];
Решение @Moti дает мне синтаксическую ошибку в этой строке $url = preg_match ("/https://cdn\.myvenue\.com/[^\"]*/",$url)[0]
. Не могли бы вы знать, может ли это быть вызвано моей версией php?
Предполагая, что у вас есть возвращенный текст в имени переменной scriptSrc
Этот код предоставит вам URL-адрес
const scriptSrc = `<script type = "text/javascript">
var sources = [
{
type:"video/mp4",
src:"https://cdn.myvenue.com/media/clips/491355/clip_saple_hd.mp4?expire=1525179619&token=1e52da03af581764724c0e2c428a9faa",
res:"VideoSample",
label: "VideoSample"
}...`
const url = scriptSrc.match(/https://cdn\.myvenue\.com/[^"]*/)
console.info(url)
Обновлено: в PHP вы можете сопоставить такое же регулярное выражение, как это
$url = file_get_contents("https://www.thevideositeurl.com/embed/{$vid}/")
preg_match('/https://cdn\.myvenue\.com/[^\"]*/', $url, $matches, PREG_OFFSET_CAPTURE);
$videoURL = ($matches[0][0]);
echo $videoURL;
Это дает мне синтаксическую ошибку в этой строке $url = preg_match ("/https://cdn\.myvenue\.com/[^\"]*/",$url)[0]
Может ли это быть вызвано моей версией php?
Я также принимаю это, потому что считаю, что это может сработать. Спасибо!
Не могли бы вы пояснить, что вы имеете в виду под «рендерами»? Вы имеете в виду, что URL-адрес
www.thevideositeurl.com
возвращает строку с этим сценарием (включая теги<script>
), или вы имеете в виду, что когда вы добавляете URL-адрес в тег сценария, он добавляет этот сценарий на страницу?