2012-03-12 72 views
2

我想檢查PHP,如果一個字符串包含指向特定域的URL並將其保存爲新字符串。檢查字符串是否包含YouTube網址

例如:「看看我最新的視頻在這裏http://www.youtube.com/?123

所以現在新的字符串應該有值「http://www.youtube.com/?123」。

如果示例中有另一個鏈接,但不是來自YouTube的,則該字符串應該只包含youtube值。

+0

究竟怎麼確定哪些YouTube網址你在新的字符串想如果沒有YouTube網址在發現原本的? – 2012-03-12 14:15:07

+1

可能重複的[從PHP中的文本中提取URL](http://stackoverflow.com/questions/910912/extract-urls-from-text-in-php) – 2012-03-12 14:15:27

+0

你已經有這個人了。 看看這裏: http://stackoverflow.com/questions/3392993/php-regex-to-get-youtube-video-id – 2012-03-12 14:17:44

回答

0

你在下面的示例中的特定領域是「youtube.com」

$sText = "Check out my latest video here http://www.youtube.com/?123"; 
preg_match_all('@https?://(www\.)?youtube.com/.[^\s.,"\'][email protected]', $sText, $aMatches); 
var_dump($aMatches); 
+0

當鏈接如下所示時,似乎不起作用: here user1264272 2012-03-12 14:45:37

+0

沒問題,因爲這不是youtube.com的有效鏈接。它需要前面的「http://」,否則就像當前域的內部鏈接一樣被解釋。在瀏覽器中試用它。 – Leif 2012-03-12 14:51:05

+0

嗨,我得到它的工作,但只有當有一個「www」的鏈接。我剛剛意識到另一個問題。有時,字符串中有多個youtube鏈接,但preg_match只查找第一個。我如何編碼? – user1264272 2012-03-12 17:43:34

0

PHP有一個內置的功能: fnmatch

fnmatch('* http://www.youtube.com/* *', string) should probably work. 
2

下面是示例功能。

function IsYoutubeUrl($url) 
{ 
    return preg_match("#^https?://(?:www\.)?youtube.com#", $url); 
} 

此功能應與HTTP和HTTPS工作,以及帶或不帶WWW(沒關係),它會怎麼寫。

如果您不希望字符串$ url開頭的網址可以刪除^

+0

我收到此錯誤信息: 警告:的preg_match()函數.preg-match]:第5行的分隔符不能是/home/.sites/123/site602/web/feeds/index.php中的字母數字或反斜槓。 如果鏈接看起來像這樣,這也可以工作 here user1264272 2012-03-12 14:42:49

+0

My錯誤@ user1264272,現在它應該工作,我使用分隔符**#**。 – Rolice 2012-03-12 14:44:53

0

這是我自己的功能,以取代與內嵌視頻中的字符串YouTube鏈接:

(YouTube視頻上WordPress的格式:[YouTube的= HTTP://www.youtube.com/watch v = zuqoGJ4Y5NM])

   function youtube($volcado) {       
        if(ereg('\[youtube=',$volcado)) { 
         //YOUTUBE CODE 
         $posicion=stripos($volcado,"[youtube="); 
         $volcado1=substr($volcado,0,$posicion); 
         $posicion=$posicion+9; 
         $volcadotemp=substr($volcado,$posicion,strlen($volcado)-$posicion); 
         $posicion2=strpos($volcadotemp,"]"); 
         $enlace_video=substr($volcadotemp,0,$posicion2); 
         $volcado2=substr($volcadotemp,$posicion2+1,strlen($volcadotemp)-$posicion2-1); 
         $posvideo=stripos($enlace_video,"watch?v="); 
         $codigo_video=substr($enlace_video,$posvideo+8,strlen($enlace_video)-1); 
         $enlace_video="http://www.youtube.com/v/".$codigo_video; 
         $codigo_video="<br><object width=\"425\" height=\"350\"><param name=\"movie\" value=\"".$enlace_video."\"></param><embed src=\"".$enlace_video."\" type=\"application/x-shockwave-flash\" width=\"425\" height=\"350\"></embed></object><br>"; 
         return $volcado1.$codigo_video.youtube($volcado2); 
         //FIN DE YOUTUBE CODE 
        } else { 
         return $volcado;      
        }      
       } 
相關問題