【问题标题】:extract YouTube URL from random text in PHP从 PHP 中的随机文本中提取 YouTube URL
【发布时间】:2010-09-06 05:53:18
【问题描述】:

我试图从随机文本中提取 YouTube 链接。例如

这是一些随机文本,url 是http://www.youtube.com/watch?v=-d3RYW0YoEk&feature=channel,我想在 PHP 中将这个 URL 从文本中提取出来。似乎无法弄清楚。找到另一种语言的解决方案,但不知道如何转换。 感谢您的帮助。

【问题讨论】:

  • 我故意把网址放在正文里。我的整个段落/解释将是文本中某处带有 URL 的随机文本。我没有分隔 URL,因为我想从一些文本中检索 URL,这就是我的示例。
  • 澄清一下,URL 周围没有 [X]HTML 标签,它们只是在普通旧(非多字节)文本中混杂在一起?

标签: php url youtube preg-match


【解决方案1】:

您可以使用preg_match_all 获取所有这样的 URL:

if(preg_match_all('~(http://www\.youtube\.com/watch\?v=[%&=#\w-]*)~',$input,$m)){
 // matches found in $m
}

【讨论】:

  • 也许您应该将www. 部分设为可选。
  • 这也将匹配http://www.youtube.example.com/watch?v=…甚至http://www.youtube.com is the YouTube’s URL; but http://example.com/watch?v=… isn’t.
  • 这很好用。非常感谢。我一直在拔头发。 :) @kitsched 我认为 ti 不会太重要,因为如果您只输入 YouTube.com,YouTube 会将您定向到 www.youtube.com,因此当有人复制和粘贴时,URL 没有 www 的可能性很小。
  • 为了让事情复杂化,还有一种情况:当用户从推文中复制一个 URL 时,它看起来像 youtu.be/xxx :)
  • @kitsched,是的,我知道。那好吧。除非有人已经有了解决方案,否则我可能会在另一次解决这个问题。 :D
【解决方案2】:

你可以尝试使用正则表达式

http://php.net/manual/en/function.preg-match.php

【讨论】:

    【解决方案3】:

    使用preg_match

    模式应该是这样的:

    /(http\:\/\/www\.youtube\.com\/watch\?v=\w{11})/
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-28
      • 2012-05-02
      • 2014-11-20
      • 1970-01-01
      • 1970-01-01
      • 2011-11-27
      相关资源
      最近更新 更多