preg_replace只匹配

时间:2012-01-14 19:37:53

标签: php preg-replace

我遇到preg_replace问题而且我不确定我是否使用了正确的功能。

我在下方使用了以下功能,以便将youtube链接更改为youtube嵌入视频。但我不知道我是如何得到匹配的部分并删除其余部分?

我的意思是:

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

当我使用此功能时,它会更改为匹配部分的嵌入代码。但我无法实现删除“& feature = 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;
}

3 个答案:

答案 0 :(得分:1)

&不是\w的一部分。我会选择\S(不是空格)。

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

答案 1 :(得分:0)

编辑:拼写错误+反斜杠

您可以对(。*)值使用反向引用 在你的情况下

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

您可以使用\\ 1获取www。和\\ 2用于获取您捕获的值(\ w +)

或者这不是你想要的?

答案 2 :(得分:0)

您的模式与整个字符串不匹配,preg_replace只会替换模式匹配的模式。您可以改为使用此模式:

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