我遇到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&server=vimeo.com&show_title=1&show_byline=1&show_portrait=0&color=&fullscreen=1"></object>'
);
foreach ($rules as $link => $player)
$string = preg_replace($link, $player, $string);
return $string;
}
答案 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'