4

YouTube の URL を交換する ( http://www.youtube.com/watch?v=CfDQ92vOfdc またはhttp://www.youtube.com/v/ CfDQ92vOfdc ) を YouTube の埋め込み URL ( http://www.youtube.com/embed/CfDQ92vOfdc ) に挿入しましたが、機能していないようです。何か案は?正規表現についてはよくわかりません。

コードは次のとおりです。

$string     = 'http://www.youtube.com/watch?v=CfDQ92vOfdc';
$search     = '#<a (?:.*?)href=["\\\']http[s]?:\/\/(?:[^\.]+\.)*youtube\.com\/(?:v\/|watch\?(?:.*?\&)?v=|embed\/)([\w\-\_]+)["\\\']#ixs';
$replace    = 'http://www.youtube.com/embed/$2';
$url        = preg_replace($search,$replace,$string);

しかし、それはまだ次のように表示されています:

http://www.youtube.com/watch?v=CfDQ92vOfdc

それ以外の:

http://www.youtube.com/embed/CfDQ92vOfdc

前もって感謝します。

4

4 に答える 4

8

1つの問題は、式がアドレスの前後にa-hrefタグを予期していることです。もう1つの問題は、$replace文字列が$2を解析しない一重引用符を使用していることです。

この単純な式は機能するはずです。

$string     = 'http://www.youtube.com/watch?v=CfDQ92vOfdc';
$search     = '/youtube\.com\/watch\?v=([a-zA-Z0-9]+)/smi';
$replace    = "youtube.com/embed/$1";    
$url = preg_replace($search,$replace,$string);
echo $url;
于 2013-03-14T05:12:13.507 に答える
0

より良い解決策をまだ探している人がいる場合は、簡単な解決策が得られるまでコードを試してみました。

$string     = $content;

$search = '/www.youtube\.com\/watch\?v=([a-zA-Z0-9]+)/smi';

$replace = "<iframe width='560' height='315' src='https://youtube.com/embed/$1' frameborder='0' allowfullscreen></iframe> ";
$content = preg_replace($search,$replace,$string);

注: リンクの処理方法を選択するには、その$search部分を編集するだけです。www.youtube.com から処理する場合は、 $search = '/www.youtube\.com\/watch\?v=([a-zA-Z0-9]+)/smi';

それ以外の場合は、youtube.com リンクのみを処理する場合は、www. $search = '/youtube\.com\/watch\?v=([a-zA-Z0-9]+)/smi';

于 2016-04-11T12:06:38.090 に答える