HTML:输入YouTube视频嵌入链接无效

时间:2018-06-27 16:45:57

标签: html css laravel

构建一个 laravel 应用,用户还可以添加youtube视频(嵌入链接)。

  1. 如何验证用户提供的链接是否实际上是嵌入的youtube视频链接?

  2. 将正确的youtube链接告知用户的正确方法是什么(例如:https://www.youtube.com/embed/Ou7rPcoqXWA 像这样。

  3. 当用户输入错误的链接时,它现在显示

    引发错误异常,并显示消息“试图获取非对象的属性'**'(视图:C:\ xampp \ htdocs \ project \ resources \ views \ front \ posts.blade.php)”

    < / li>

因此,我该怎么做才能使用户知道链接不正确 和 如果他们放置了错误的链接,则该链接不应显示在视图(前端)中。

表单中的输入字段具有类,名称,标题,占位符(YouTube视频URL(仅粘贴嵌入的YouTube代码|例如:https://youtu.be/xBht9TG7ySw))和类型。

&这是在视图刀片中

iframe src="{{$post->video}}" frameborder="0" allowfullscreen="allowfullscreen" height="315" width="100%"></iframe>

2 个答案:

答案 0 :(得分:2)

Regular Expressions对于这种验证很有用。 对于client-side验证:

function validateYoutubeURL(url){
    var regex=/https?:\/\/youtu(be\.com|\.be)\/.+/;
    return regex.test(url.toLowerCase());
}

对于server-side validation

public function store(Request $request){
    $this->validate($request, [
       'field_name'=> [
            'required',
            'regex:/https?:\/\/youtu(be\.com|\.be)\/.+/',
        ]
    ]);
}

为了向用户通知错误的URL,请使用this(服务器端验证):

@if ($errors->any())
    <div class="alert alert-danger">
        <ul>
            @foreach ($errors->all() as $error)
                <li>{{ $error }}</li>
            @endforeach
        </ul>
    </div>
@endif

重要:

  

注意:使用regex / not_regex模式时,可能需要在数组中指定规则而不是使用管道定界符,尤其是在正则表达式包含管道字符的情况下。

对于问题的第三部分,请发布您的视图和控制器。

答案 1 :(得分:0)

如何使用 Youtube的API?
毕竟,这意味着要使用某种官方软件,而与解析某些HTML页面相比,这种更改的可能性较小。

有关更多信息:YouTube APIs and Tools - Developer's Guide: PHP

Retrieving a specific video entry似乎很有趣:如果您向这样的网址发送请求:

http://gdata.youtube.com/feeds/api/videos/videoID

(用视频ID替换“ videoID”,当然)

如果视频有效,您将获得一些ATOM供稿;和“无效ID”(如果不是)

而且,我坚持:这样,您依赖于已记录的API ,而不是依赖于当今存在的某种行为,但是这种行为是不受保证的。

相关问题