2015-05-11 65 views
1

我想要使用preg_replace將我的數據庫中存儲的標準youtube視頻鏈接(如:https://www.youtube.com/watch?v=zVzhpkFBFP8)更改爲嵌入網址(如:https://www.youtube.com/embed/zVzhpkFBFP8)。這是我的代碼到目前爲止:使用preg_replace改變youtube鏈接

<?php 
    $Link = getuser($my_id, 'YoutubeLink'); 
    $LinkNew = preg_replace("/watch?v=*/","embed*/","$Link"); 
    echo "$LinkNew" ?> 

但它不工作。我可能做了一些愚蠢的事情,但我是新來的PHP,所以任何幫助表示讚賞。

回答

2

不需要使用preg_replace來處理類似沒有圖案的東西。作爲watch?v=是永遠不變的,而是使用str_replace('watch?v=', 'embed/', $Link);

+0

工作,謝謝! –

0

你的正則表達式爲是不工作,因爲?是正則表達式中的特殊字符,所以你需要逃避它。問號使前面的字符可選。爲了逃避,只需在它之前添加一個反斜槓\?

*也被錯誤地使用。星號是一個量詞,所以你說零或更多等號。如果你想在等號後面做所有事情,你可以做.*。這將得到其他每個字符,因爲.是任何字符,並配對*就是一切。你實際上並不想這樣做,因爲你沒有將它分組,而替換隻會將其刪除。如果您要分組,您可以稍後在替換時使用該值,使用$1。這是一個寫在http://www.regular-expressions.info/brackets.html

<?php 
    $Link = getuser($my_id, 'YoutubeLink'); 
    $LinkNew = preg_replace("/watch\?v=/","embed/", $Link); 
    echo "$LinkNew"; ?> 

作爲@ V13Axel指出,雖然這可以使用str_replace輕鬆完成。