2012-03-12 74 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;      
        }      
       } 
相关问题