我想检查PHP,如果字符串包含指向特定域的URL并将其保存在新字符串中。
示例:"在此处查看我的最新视频http://www.youtube.com/?123"
所以现在新字符串的值应为" http://www.youtube.com/?123"。
如果示例中有其他链接,但不是来自youtube,则该字符串仍应仅包含youtube值。
答案 0 :(得分:2)
这是示例函数。
function IsYoutubeUrl($url)
{
return preg_match("#^https?://(?:www\.)?youtube.com#", $url);
}
此功能应该与HTTP和HTTPS一起使用,无论是否有www(无关紧要)如何编写。
如果您不希望字符串$ url开头的网址可以删除 ^ 。
答案 1 :(得分:0)
PHP有一个内置函数: fnmatch
fnmatch('* http://www.youtube.com/* *', string) should probably work.
答案 2 :(得分:0)
以下示例中的特定域名为“youtube.com”
$sText = "Check out my latest video here http://www.youtube.com/?123";
preg_match_all('@https?://(www\.)?youtube.com/.[^\s.,"\']+@i', $sText, $aMatches);
var_dump($aMatches);
答案 3 :(得分:0)
这是我自己的功能,用嵌入的视频替换字符串上的youtube链接:
(关于wordpress格式的youtube视频:[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;
}
}