【发布时间】:2018-04-23 18:28:31
【问题描述】:
我在 PHP 中有以下正则表达式来验证 YouTube 视频的 URL:
preg_match('/^(?:http(?:s)?:\/\/)?(?:www\.)?(?:m\.)?(?:youtu\.be\/|youtube\.com\/(?:(?:watch)?\?(?:.*&)?v(?:i)?=|(?:embed|v|vi|user)\/))([^\?&\"\'>]+)/', $message)
我需要在 MySQL 中实现同样的正则表达式,这样:
$posts = mysql_query("
SELECT *
FROM posts
WHERE message REGEXP '^(?:http(?:s)?:\/\/)?(?:www\.)?(?:m\.)?(?:youtu\.be\/|youtube\.com\/(?:(?:watch)?\?(?:.*&)?v(?:i)?=|(?:embed|v|vi|user)\/))([^\?&\"\'>]+)'
", $connection);
但它不起作用。
【问题讨论】:
-
@tung 如果我在 PHP 中运行正则表达式,它可以正常工作,但 MySQL 查询不返回任何记录。错误是常规表达式,因为例如我执行
WHERE message REGEXP 'youtube\.com'它可以工作。 -
从here获取它。
-
@WiktorStribiżew 非常感谢!看来它有效。