Php 赛前烦恼
我正在尝试将Youtube URL与正则表达式匹配,以查看它是否有效。这是我的代码:Php 赛前烦恼,php,regex,preg-match,Php,Regex,Preg Match,我正在尝试将Youtube URL与正则表达式匹配,以查看它是否有效。这是我的代码: if(preg_match('\bhttp://youtube.com/watch\?v=.*\b', $link)) { echo "matched youtube"; } 但我有一个错误: Warning: preg_match() [function.preg-match]: Delimiter must not be alphanumeric or backslash in C:\xampp
if(preg_match('\bhttp://youtube.com/watch\?v=.*\b', $link))
{
echo "matched youtube";
}
但我有一个错误:
Warning: preg_match() [function.preg-match]: Delimiter must not be alphanumeric or backslash in C:\xampp\htdocs\ajax\youtube.php on line 22
我承认我对正则表达式是一个完全的新手,我不太了解它们,但我正在努力学习。我使用这个在线正则表达式工具制作了上述正则表达式:
它在那里工作。那么,我做错了什么?有没有更好的方法验证youtube URL
谢谢。:) 这里真的不需要预赛:
$url = "http://youtube.com/watch?v=abc";
if(strpos($url, "http://youtube.com/watch?v=") === 0) {
echo "Valid";
}
您应该向regexp添加额外的delimeters。这用于提供可选参数:
preg_match('"\bhttp://youtube.com/watch\?v=.*\b"', $link)
符号/
通常用作regexp delimeter,但在您的情况下,它将强制内部/
转义。因此,为了获得更清晰的视图,我建议使用PCRE将正则表达式和可选表达式分开
在这种情况下,假定\
,但\
不是有效的分隔符(请参阅错误消息)。请使用不同的字符,如~
:
preg_match('~\bhttp://youtube\.com/watch\?v=.*\b~', $link)
使用preg_match时,需要使用适当的分隔符将regexp括起来 例如:
preg_match('/\bhttp://youtube.com/watch\?v=.*\b/', $link)
在您的示例中\b代表单词边界,这不是有效的字母数字分隔符,因此会显示错误消息