我想检查PHP,如果一个字符串包含指向特定域的URL并将其保存为新字符串。检查字符串是否包含YouTube网址
例如:“看看我最新的视频在这里http://www.youtube.com/?123”
所以现在新的字符串应该有值“http://www.youtube.com/?123”。
如果示例中有另一个链接,但不是来自YouTube的,则该字符串应该只包含youtube值。
我想检查PHP,如果一个字符串包含指向特定域的URL并将其保存为新字符串。检查字符串是否包含YouTube网址
例如:“看看我最新的视频在这里http://www.youtube.com/?123”
所以现在新的字符串应该有值“http://www.youtube.com/?123”。
如果示例中有另一个链接,但不是来自YouTube的,则该字符串应该只包含youtube值。
你在下面的示例中的特定领域是“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);
当链接如下所示时,似乎不起作用: here – user1264272 2012-03-12 14:45:37
没问题,因为这不是youtube.com的有效链接。它需要前面的“http://”,否则就像当前域的内部链接一样被解释。在浏览器中试用它。 – Leif 2012-03-12 14:51:05
嗨,我得到它的工作,但只有当有一个“www”的链接。我刚刚意识到另一个问题。有时,字符串中有多个youtube链接,但preg_match只查找第一个。我如何编码? – user1264272 2012-03-12 17:43:34
PHP有一个内置的功能: fnmatch
fnmatch('* http://www.youtube.com/* *', string) should probably work.
下面是示例功能。
function IsYoutubeUrl($url)
{
return preg_match("#^https?://(?:www\.)?youtube.com#", $url);
}
此功能应与HTTP和HTTPS工作,以及带或不带WWW(没关系),它会怎么写。
如果您不希望字符串$ url开头的网址可以删除^。
我收到此错误信息: 警告:的preg_match()函数.preg-match]:第5行的分隔符不能是/home/.sites/123/site602/web/feeds/index.php中的字母数字或反斜杠。 如果链接看起来像这样,这也可以工作 here – user1264272 2012-03-12 14:42:49
My错误@ user1264272,现在它应该工作,我使用分隔符**#**。 – Rolice 2012-03-12 14:44:53
这是我自己的功能,以取代与内嵌视频中的字符串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;
}
}
究竟怎么确定哪些YouTube网址你在新的字符串想如果没有YouTube网址在发现原本的? – 2012-03-12 14:15:07
可能重复的[从PHP中的文本中提取URL](http://stackoverflow.com/questions/910912/extract-urls-from-text-in-php) – 2012-03-12 14:15:27
你已经有这个人了。 看看这里: http://stackoverflow.com/questions/3392993/php-regex-to-get-youtube-video-id – 2012-03-12 14:17:44