2016-10-24 9 views
1

YouTubeのリンクがある投稿を選択しても動作しないphpでsqlリクエストを作成しようとしました。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 

これは可能shuld:

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

残念ながら、それは動作しません。 私を助けることができますか?

ありがとうございました。

+0

印刷 '$のsql'を検出します? – Karthi

+1

DBエンジンを指定し、現在の結果と予想される結果を指定してください。 –

答えて

0

この正規表現は、完全なリンクと短いもの(youtu.be)

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

も役に立たない – TheRolf

+0

私はそれが最後に働いたと思う?この正規表現は私のために素晴らしい作品 – Max

+0

はいありがとう作品 – TheRolf

0

この正規表現を試してください。 'http(s)?://(www\.)?youtu(be\.com/watch\\?v=|\.be/)([[:alnum:]]+)'

+0

これは次のようなリンクではありません: – TheRolf

+0

https://youtu.be/oYHX0nyRsdg – TheRolf

+0

欠けているhttp://の場合、これは簡単に省略することができます。 '(http(s) ?://)? '。 クエリをデータベース(コンソール、phpmyadminなど)に直接使用して、結果が得られるかどうかを確認してください。別の場所に問題があるかもしれません。編集:なぜあなたのregexpに "#"がありますか? –

関連する問題