2012-01-14 3 views
0

私はpreg_replaceに問題があり、正しい機能を使用しているかどうかわかりません。preg_replaceが一致するだけです

私はyoutubeリンクをyoutube埋め込みビデオに変更するために以下の関数を使用しています。しかし、私はどのように私は部分を取得し、残りの部分を削除見つけることができませんでしたか?

私は、例えば意味:私はこの機能を使用する場合には、マッチした部分に埋め込みコードを変更

http://www.vimeo.com/3124234&feature=1&v=1

です。しかし、私は "&機能= 1"部分を削除することができませんでした。

私はpreg_replaceを使うべきでしょうか、それとも他の関数が私が何をしようとしているのでしょうか?

乾杯

function convert_videos($string) { 
    $rules = array(
'#http://(www\.)?vimeo\.com/(\w+)?#i' => '<object width="450" height="320" data="http://vimeo.com/moogaloop.swf?clip_id=$2&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1"></object>' 
    ); 

    foreach ($rules as $link => $player) 
     $string = preg_replace($link, $player, $string); 


    return $string; 
} 

答えて

0

あなたのパターンは文字列全体と一致せず、preg_replaceはあなたのパターンと一致するものだけを置き換えます。代わりにこのパターンを使用することができます:

'#^http://(www\.)?vimeo\.com/(\w+)(&.*)?$#i' 
+0

ちょうど素晴らしい仕事!ありがとうございました – Mertafor

1

&それだ\wの一部ではありません。私は代わりに\S(スペースではない)に行くだろう。

#http://(www\.)?vimeo\.com/(\S+)?#i 
0

編集:(。*)タイプミス+バックスラッシュ

あなたはあなたのために後方参照を使用することができますが、あなたがWWWを取得するため\\ 1を使用することができますあなたのケースで

#http://(www\.)?vimeo\.com/(\w+)?#i 

値。 (\ w +)

でキャッチする値を取得するための\\ 2またはこれはあなたが望むものではありませんでしたか?

+0

実際に私は正規表現が良くありません。私はさまざまなビデオのウェブサイトの長いリストを持っています。 (\ n | \ s)の動画を再生中です(例:youtube): #http://(www \。)?youtube \ .com/watch \?v =([^&\ n] )#i「は私はユーチューブリンク – Mertafor

+0

の残りの部分を無視することができ、私はそれのようなものかもしれないわけかfindoutすることはできません : 」?いくつかの単語http://www.youtube.com/v?2413&feature= 1いくつかの他の言葉 ' 私はちょうど一致しない部分を無視したい – Mertafor

関連する問題