我正在使用wordpress,我有一个需要验证的表单。我有一个输入字段来检查以确保它是一个有效的youtube网址。 我用jquery发现了这个漂亮的小方法..
$("input#video_url").change(function (){
var matches = $(this).val().match(/^(?:https?:\/\/)?(?:www\.)?youtube\.com\/watch\?(?=.*v=((\w|-){11}))(?:\S+)?$/);
if (matches) {
$(".video-validation").append("<span>Valid</span>");
} else {
$(".video-validation").append("<span>This is not a valid youtube url</span>");
}
});
但后来我读到这样的验证需要用php来完成,所以不能在客户端进行更改。
我一直在寻找某种类型的明确教程,但找不到。所以我的问题是:
如何在我的functions.php中将url的验证转换为php函数,然后结合jquery使用它来进行ajax验证,然后才能处理表单?
答案 0 :(得分:0)
用链接做一个ajax帖子:
$.post('validate.php', function(data) {
$('.result').html(data);
});
在你的 validate.php 文件中做同样的事情:
validate.php
$result = preg_match(/^(?:https?:\/\/)?(?:www\.)?youtube\.com\/watch\?(?=.*v=((\w|-){11}))(?:\S+)?$/);
if ( $result ) {
die( '<span>Valid</span>' );
} else {
die( '<span>This is not a valid youtube url</span>');
}
您的结束代码可能如下所示:
$("input#video_url").change(function (){
$.post('validate.php', function(data) {
$('.video-validation').html(data);
});
});
答案 1 :(得分:0)
享受这个小正则表达式:
if (!preg_match('/^(http:\/\/){0,1}(www\.){0,1}youtube\.com\/watch\?v=([a-z0-9\-_\|]{11})/i', $gyoutube, $matches))
{
$error = "This ain't a Youtube video";
}
此外,PHP验证在之后完成,而不是在提交表单之前完成。
答案 2 :(得分:0)
这是教程的链接 - http://www.krio.me/how-to-validate-a-url-php/
你也可以使用filter_var()函数 - filter_var('test.com',FILTER_VALIDATE_URL)