Php MySQL查询中的YouTube视频正则表达式
我有以下PHP正则表达式,用于验证YouTube视频的URL:Php MySQL查询中的YouTube视频正则表达式,php,mysql,regex,Php,Mysql,Regex,我有以下PHP正则表达式,用于验证YouTube视频的URL: preg\u match('/^(?:http(?:s):\/\/)(?:www\)(?:m\)(?:youtu\.be\/\/;youtube\.com\/(?:(:watch)\?(?::*&)v(?:i)==(?:嵌入v | v | vi |用户)\/)([^?&“\”>)+)/,$message 我需要在MySQL中实现相同的正则表达式,以便: $posts = mysql_query(" SELECT *
preg\u match('/^(?:http(?:s):\/\/)(?:www\)(?:m\)(?:youtu\.be\/\/;youtube\.com\/(?:(:watch)\?(?::*&)v(?:i)==(?:嵌入v | v | vi |用户)\/)([^?&“\”>)+)/,$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);
但它不起作用。您可以使用
REGEXP '^(https?://)?(www[.])?(m[.])?(youtu[.]be/|youtube[.]com/((watch)?[?](.*&)?vi?=|(embed|v|vi|user)/))[^?&\"''>]+'
重点是:
- 将所有非捕获组替换为捕获组
- 不要转义
,因为它们不是特殊的正则表达式元字符/
- 在单个字符周围使用
更容易,以防您不确定它们应该如何转义[]
- 要定义单引号,需要在MySQL字符串文本中使用双单引号
WHERE message REGEXP'youtube\.com'
它可以工作。从中获取它。@WiktorStribiżew非常感谢!它似乎可以工作。