【问题标题】:check if string contains youtube URL检查字符串是否包含 youtube URL
【发布时间】:2012-03-28 22:39:50
【问题描述】:

我想在 PHP 中检查一个字符串是否包含指向特定域的 URL 并将其保存在一个新字符串中。

示例:“在这里查看我的最新视频http://www.youtube.com/?123

所以现在新字符串的值应该是“http://www.youtube.com/?123”。

如果示例中有另一个链接,但不是来自 youtube,则字符串仍应仅包含 youtube 值。

【问题讨论】:

标签: php url hyperlink


【解决方案1】:

这是示例函数。

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

这个函数应该与 HTTP 和 HTTPS 一起工作,无论有没有 www(没关系)它是如何编写的。

如果您不希望字符串 $url 开头的 URL,您可以删除 ^

【讨论】:

  • 我收到此错误消息:警告:preg_match() [function.preg-match]:/home/.sites/123/site602/web/feeds/index 中的分隔符不能是字母数字或反斜杠.php 在第 5 行。如果链接看起来像这样 youtube.com/?123"> 这里
  • 我的错误@user1264272,现在它应该可以工作了,我用作分隔符#
【解决方案2】:

以下示例中您的特定域是“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);

【讨论】:

  • 当链接看起来像这样时,这似乎不起作用:这里
  • 没问题,因为这不是指向 youtube.com 的有效链接。前面需要“http://”,否则解释为当前域的内部链接。在您的浏览器中尝试一下。
  • 嗨,我让它工作了,但只有当链接中有“www”时。我刚刚意识到另一个问题。有时,字符串中有多个 youtube 链接,但 preg_match 只查找第一个。我该如何编码?
  • 带有 www 的东西:已修复。我忘记了“?”。使用 preg_match_all() 获取所有匹配项。
  • 谢谢我昨天通过一些试验和错误想通了。
【解决方案3】:

PHP 有一个内置函数: fnmatch

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

【讨论】:

    【解决方案4】:

    这是我自己的函数,用嵌入的视频替换字符串上的 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;                     
                        }                       
                    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-02-18
      • 1970-01-01
      • 2013-02-07
      • 2011-11-09
      • 2013-05-18
      • 2012-06-30
      • 1970-01-01
      相关资源
      最近更新 更多