Php 如何让用户输入视频url,并在提交时在同一页面上显示视频?

Php 如何让用户输入视频url,并在提交时在同一页面上显示视频?,php,forms,video,input,embed,Php,Forms,Video,Input,Embed,我见过一些类似的问题,但没有一个答案对我有用。理想情况下,用户将在表单中输入视频url,点击提交,然后视频将显示在表单下方。这是我的代码,它不工作(如果它混乱或混乱,请道歉): * > 您似乎要求用户输入一个URL,如“www.youtube.com/watch?v=vidID”,然后获取整个字符串值并将其插入源值 这实际上将源代码设置为“www.youtube.com/embed/www.youtube.com/watch?v=vidID” 在插入 由于这些URL的结构,视频ID是字符串

我见过一些类似的问题,但没有一个答案对我有用。理想情况下,用户将在表单中输入视频url,点击提交,然后视频将显示在表单下方。这是我的代码,它不工作(如果它混乱或混乱,请道歉):


*
>


您似乎要求用户输入一个URL,如“www.youtube.com/watch?v=vidID”,然后获取整个字符串值并将其插入
源值

这实际上将源代码设置为“www.youtube.com/embed/www.youtube.com/watch?v=vidID”

在插入

由于这些URL的结构,视频ID是字符串中的最后一个值。这意味着您可以“分解”字符串并获取创建该字符串的数组中的最后一个值

这里有一个简单的例子说明如何做到这一点:

<?php
    //Sample Variables
    $youtubeURL = 'www.youtube.com/watch?v=vidID';
    $vimeoURL = 'https://vimeo.com/vidID';

    //Test Values
    $vidURL = $youtubeURL;
    $videoSource = 'youtube';

    //Select Delimiter based on the video source
    switch ($videoSource) {
        case 'youtube':
            $delimiter = '=';
            break;
        case 'vimeo':
            $delimiter = '/';
            break;
        default:
            //Whatever fallback you want
    }

    //Isolate the vidID value string
    $vidID = end(explode($delimiter, $vidURL));
?>


欢迎来到StackOverflow!我不能帮你解决问题,但再多了解一些细节可能会让其他人帮助你。到底是什么不起作用?您是否收到任何错误消息?您说用户输入视频URL,但您的代码说用户将只输入来自Youtube或Vimeo视频的视频ID。假设我输入“sMSPp3szNB0”并在视频类型中选择youtube,则此视频将出现在iframe:。是您正在寻找的还是希望用户输入完整的URL?谢谢@smacdonald!正如其他人指出的,嵌入的源代码没有被解析。正如@user3438533所指出的,当用户只输入视频ID而不是整个URL时,它看起来是有效的。感谢您提供的示例代码!我正在尝试,但无法让它从URL中实际提取视频ID(我仍然得到如下输出:
src=”http://www.youtube.com/embed/https://www.youtube.com/watch?v=vidID
)。我想现在我们只需要向用户解释插入ID而不是整个URL。很抱歉,它对您不起作用,我在PHP Tester中测试了它,它在上面所示的上下文中工作。您可以在这里进行测试:只需添加最后一行,
echo$vidID;
来输出值。也许可以在一个单独的环境中尝试一下您的代码祝你申请顺利。
<?php
    //Sample Variables
    $youtubeURL = 'www.youtube.com/watch?v=vidID';
    $vimeoURL = 'https://vimeo.com/vidID';

    //Test Values
    $vidURL = $youtubeURL;
    $videoSource = 'youtube';

    //Select Delimiter based on the video source
    switch ($videoSource) {
        case 'youtube':
            $delimiter = '=';
            break;
        case 'vimeo':
            $delimiter = '/';
            break;
        default:
            //Whatever fallback you want
    }

    //Isolate the vidID value string
    $vidID = end(explode($delimiter, $vidURL));
?>