preg_match 麻烦

发布于 2024-09-19 23:26:15 字数 595 浏览 10 评论 0原文

我正在尝试将 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\htdocs\ajax\youtube.php on line 22

我承认我是正则表达式的新手,我不太了解它们,但我在这样做时正在努力学习。我使用此在线正则表达式工具制作了上述正则表达式:

http://gskinner.com/RegExr/

和它在那里工作。那么我做错了什么,有没有更好的方法来验证 YouTube URL?

谢谢。 :)

I am trying to match a Youtube URL with regex to see if it is valid. This is my code:

if(preg_match('\bhttp://youtube.com/watch\?v=.*\b', $link))
{
    echo "matched youtube";
}

But I'm getting an error:

Warning:  preg_match() [function.preg-match]: Delimiter must not be alphanumeric or backslash in C:\xampp\htdocs\ajax\youtube.php on line 22

I'll admit I am a complete novice to regular expressions and I don't understand them much but I am trying to learn as I do this. I made the above regex using this online regex tool:

http://gskinner.com/RegExr/

and it works there. So what am I doing wrong and is there a better way to validate a youtube URL?

Thanks. :)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

奈何桥上唱咆哮 2024-09-26 23:26:15

这里确实不需要 preg_match:

$url = "http://youtube.com/watch?v=abc";
if(strpos($url, "http://youtube.com/watch?v=") === 0) {
    echo "Valid";
}

There's really no need for preg_match here:

$url = "http://youtube.com/watch?v=abc";
if(strpos($url, "http://youtube.com/watch?v=") === 0) {
    echo "Valid";
}
知你几分 2024-09-26 23:26:15

PCRE 需要 分隔符 来分隔正则表达式和可选的 修饰符

在这种情况下,假定 \\ 不是有效的分隔符(请参阅错误消息)。使用不同的字符,如 ~

preg_match('~\bhttp://youtube\.com/watch\?v=.*\b~', $link)

PCRE require delimiters that separate the regular expressions and optional modifiers.

In this case the \ is assumed but \ is not a valid delimiter (see error message). Use a different character like ~:

preg_match('~\bhttp://youtube\.com/watch\?v=.*\b~', $link)
浴红衣 2024-09-26 23:26:15

您应该在正则表达式中添加附加分隔符。这用于提供可选参数:

preg_match('"\bhttp://youtube.com/watch\?v=.*\b"', $link) 

符号 / 通常用作正则表达式分隔符,但在您的情况下,它将强制内部 / 被转义。因此,为了获得更清晰的视图,我建议使用 "

You should add addition delimeters to your regexp. This is used to supply optional parameters:

preg_match('"\bhttp://youtube.com/watch\?v=.*\b"', $link) 

Symbol / is usually used as regexp delimeter, but in your case it'll force inner / to be escaped. So for more clear view I suggest to use ".

傾城如夢未必闌珊 2024-09-26 23:26:15

当使用 preg_match 时,正则表达式需要用适当的分隔符括起来。

例如:

preg_match('/\bhttp://youtube.com/watch\?v=.*\b/', $link)

在您的示例中 \b 代表单词边界,这不是有效的字母数字分隔符,因此会出现错误消息

When using preg_match, then the regexp needs to be enclosed with proper delimiters.

For example:

preg_match('/\bhttp://youtube.com/watch\?v=.*\b/', $link)

In your example \b stands for word boundary, this is not a valid alphanumeric delimiter, hence the error message

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文