Получить динамическую переменную из внешнего javascript

У меня есть внешний файл, который отображает видео на моем сайте с использованием динамического 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

Это возможно?

Не могли бы вы пояснить, что вы имеете в виду под «рендерами»? Вы имеете в виду, что URL-адрес www.thevideositeurl.com возвращает строку с этим сценарием (включая теги <script>), или вы имеете в виду, что когда вы добавляете URL-адрес в тег сценария, он добавляет этот сценарий на страницу?

Mark 01.05.2018 19:59

скрипт этого типа имеет атрибут textContent. ты можешь это использовать?

Moti Korets 01.05.2018 20:05

@Mark_M возвращает строку с этим скриптом (включая теги <script>)

bpy 01.05.2018 20:22

@Mark_M Я обновил свой вопрос. Не могли бы вы посмотреть, поможет ли это?

bpy 01.05.2018 21:08
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
3
4
74
2

Ответы 2

Предполагая, что вы хотите перейти к первому объекту (или, возможно, у вас есть только один) в вашем массиве 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;

Не могли бы вы уточнить это?

bpy 01.05.2018 20:39

Как включить "динамический URL" на свой сайт (или страницу)?

Alex Baban 01.05.2018 20:48

таким образом: $vid = 231231; $url = file_get_contents("https://www.thevideositeurl.com/embed/{$v‌​id}/") echo $url ; Затем я отображаю упоминание javascript, а также некоторые html

bpy 01.05.2018 20:51

Вы используете PHP на стороне сервера? Где вам нужен video URL, на стороне сервера или на стороне клиента?

Alex Baban 01.05.2018 20:59

Мне это нужно на стороне сервера

bpy 01.05.2018 21:03

Затем @Moti ответил на ваш вопрос, но, поскольку вы echo $url ;, я бы дал video URL другое имя, например $videoURL = preg_match ("/https://cdn\.myvenue\.com/[^\"]*/",$url)[0];

Alex Baban 01.05.2018 21:12

Решение @Moti дает мне синтаксическую ошибку в этой строке $url = preg_match ("/https://cdn\.myvenue\.com/[^\"]*/",$url)[0]. Не могли бы вы знать, может ли это быть вызвано моей версией php?

bpy 01.05.2018 21:31

Предполагая, что у вас есть возвращенный текст в имени переменной 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?

bpy 01.05.2018 21:30

Я также принимаю это, потому что считаю, что это может сработать. Спасибо!

bpy 01.05.2018 21:51

Другие вопросы по теме