Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL查询中的YouTube视频正则表达式_Php_Mysql_Regex - Fatal编程技术网

Php MySQL查询中的YouTube视频正则表达式

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 *

我有以下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 *
    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字符串文本中使用双单引号

@tung如果我在PHP中运行正则表达式,它会正常工作,但MySQL查询不会返回任何记录。错误在于正则表达式,因为如果我执行
WHERE message REGEXP'youtube\.com'
它可以工作。从中获取它。@WiktorStribiżew非常感谢!它似乎可以工作。