构建一个 laravel 应用,用户还可以添加youtube视频(嵌入链接)。
如何验证用户提供的链接是否实际上是嵌入的youtube视频链接?
将正确的youtube链接告知用户的正确方法是什么(例如:https://www.youtube.com/embed/Ou7rPcoqXWA 像这样。
当用户输入错误的链接时,它现在显示
引发错误异常,并显示消息“试图获取非对象的属性'**'(视图: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>
答案 0 :(得分:2)
Regular Expressions对于这种验证很有用。 对于client-side验证:
function validateYoutubeURL(url){
var regex=/https?:\/\/youtu(be\.com|\.be)\/.+/;
return regex.test(url.toLowerCase());
}
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 ,而不是依赖于当今存在的某种行为,但是这种行为是不受保证的。