2013-07-02 55 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);