用php的SQL请求:选择有youtube链接的帖子

时间:2016-10-24 11:23:36

标签: php sql regex youtube

我尝试用php发出sql请求,选择有youtube链接的帖子,但它不起作用。

这就是我所做的:

$bdd = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root', '');
$motif='#http(?:s?)://(?:www\.)?youtu(?:be\.com/watch\?v=|\.be/)([\w\-\_]+)(&(amp;)?[\w\?=‌​]*)?#';
$sql = "SELECT * FROM posts WHERE post REGEXP :motif";
$params = array(':motif'=>$motif);
$search_for_yt_links = $bdd->prepare($sql);
$search_for_yt_links->execute($params);

$result = $search_for_yt_links->fetch();
var_dump($result);

我得到了这个结果:

false

这个是:

array (size=1)
  'post' => string 'Look at my new video https://www.youtube.com/watch?v=y2Xef0CnUYA. Awesome ?' (length=75)

不幸的是它不起作用。 你能救我吗?

感谢。

2 个答案:

答案 0 :(得分:0)

试试这个正则表达式。 'http(s)?://(www\.)?youtu(be\.com/watch\\?v=|\.be/)([[:alnum:]]+)'

答案 1 :(得分:0)

此正则表达式检测完整链接和短链接(youtu.be)

"/\s*[a-zA-Z\/\/:\.]*youtu(be.com\/watch\?v=|.be\/)([a-zA-Z0-9\-_]+)([a-zA-Z0-9\/\*\-\_\?\&\;\%\=\.]*)/i"