2013-07-02 39 views
1

我有一些正则表达式的问题。 我想修改iframe的src,我需要添加enablejsapi,如果它不存在。需要修改src在youtube iframe

preg_match('/<iframe[^>]+src=([\'"])?((?(1).+?|[^\s>]+))(?(1)\1)/', 
$model->video, $matches); 
$src = $matches[2]; 
if(!strstr($src,"enablejsapi")){ 
    if(strstr($src, "?")){ 
     $src.="&enablejsapi=1"; 
    }else{ 
     $src.="?enablejsapi=1"; 
    } 
} 

我明白了,但是我不能把它放回去。我需要它来控制视频。像$("#player").stop();

+2

你能提供的几个例子你想要什么代码(/不)的比赛,所以我可以看到你的正则表达式是怎么工作的?试图用这样的小背景来解码复杂的东西,并不好玩。 –

+1

要检查它是否具有'enablejsapi',请使用Domdocument和parse_str,parse_url函数。 –

回答

0

试试这个

preg_match('#<iframe[^>]+src=([\'"])(.*)\1#isU', $model->video, $matches); 
$src = $matches[2]; 
if(false === strstr($src, 'enablejsapi')){ 
    if(false !== strstr($src, '?')){ 
     $src.= '&enablejsapi=1'; 
    }else{ 
     $src.= '?enablejsapi=1'; 
    } 
} 
$model->video = preg_replace('#' . preg_quote($matches[2]) . '#', $src, $model->video);