2011-10-28 72 views
2

我想要做的是轉換YouTube上的視頻網址/ vimeo返回一個新的網址,可以嵌入到iframe和自動化視頻嵌入代碼。PHP一起使用str_replace,substr和strpos

這工作就像一個魅力。

$url = "http://vimeo.com/29431603"; 
$orj_value = array("watch?v=", "http://vimeo.com/"); 
$new_value = array("embed/", "http://player.vimeo.com/video/"); 
$url = str_replace($orj_value, $new_value, $url); 
echo $url; 

你知道,YouTube廣告的醜陋的字符串也將網址與&開始,所以當我把它給剔除了YouTube上的不需要部分

$url = substr($url, 0, strpos($url, "&")); 

echo $url; 

網址。但是,沒有&裏面的vimeo代碼就不會返回任何東西。似乎在添加新行後,代碼想要在url內部看到一個&;否則回顯$ url var顯示空白屏幕。

2-對於dailymotion,我需要去掉所有東西之後第一個_ 我應該如何編輯下面的行以包含dailymotion的支持呢?

$url = substr($url, 0, strpos($url, "&")); 

在此先感謝任何人要回答:)

回答

1

如果strpos()不能找到你搜索將返回錯誤的字符,這可能混淆SUBSTR()。

嘗試這樣:

$url = strpos($url, "&") ? substr($url, 0, strpos($url, "&")) : $url; 

至於您的評論:

if(strpos($url, "&")) { 
    $url = substr($url, 0, strpos($url, "&")); 
} else if(strpos($url, "_")) { 
    $url = substr($url, 0, strpos($url, "_")); 
} 

有更優雅的方式做到這一點(例如正則表達式。),但這會做。請注意,&或_不能是字符串中的第一個字符,如果您想允許此條件添加!== false。

+0

它工作得很好..非常感謝你Hikaru :) 這是一個簡單的調整來編輯這個 $ url = strpos($ url,「&」)? substr($ url,0,strpos($ url,「&」)):$ url; 並使其刪除第一次或之後第一個_? –

+0

我加了一點小小的調整。你不能在if-else那裏使用這個快捷方式符號。 –

+0

非常好,非常感謝你Hikaru ...我點擊了複選框,但由於某種原因,它不會讓我在你的消息上0變爲1 :) –