【问题标题】:How can I grab just the text I want - PHP [duplicate]我怎样才能抓住我想要的文本 - PHP [重复]
【发布时间】:2012-01-12 21:39:36
【问题描述】:

所以我得到了这个 RSS 文件,我正试图从中获取 URL 的一部分。所以这就是我尝试过的(这是行不通的)。

我有这个网址,我可以很容易地获得:

http://www.youtube.com/watch?v=tUPjxGmh9i8&feature=youtube_gdata

我尝试在 PHP 中使用 $link = ltrim($link, 'http://www.youtube.com/watch?v=');$link = rtrim($trim, '&feature=youtube_gdata');

它返回“UPjxGmh9i8”。它切断了前面的“t”。 PHP.net 文档页面对我来说并不是最容易阅读和解释的,但我假设 ltrim() 和 rtrim() 的第二个参数中的任何单个字符都被删除了,这不是我想要的。是否有其他解决方案可用于仅获取我想要的文本?

非常感谢任何帮助。

【问题讨论】:

  • @AurelioDeRosa:不是真正的骗子; OP 不想使用preg_match()
  • @alex 实际上我看不出他在哪里要求非正则表达式解决方案。
  • @AurelioDeRosa 他没有,但另一个问题询问如何使用一个工具明确解决这个问题,preg_match()

标签: php


【解决方案1】:

用PHP,就不能直接获取v的值吗?

$result = $_GET['v'];
var_dump($result);

【讨论】:

  • 如果 OP 在 YouTube 网站上运行,这将起作用:P
  • 也许,我不知道怎么做。我从一个从 XML 文件创建的数组中获取这个 URL,我实际上并没有去这个 URL,只是抓取它的一部分。
【解决方案2】:

这就是我的做法......

$query = parse_url(
            'http://www.youtube.com/watch?v=tUPjxGmh9i8&feature=youtube_gdata', 
            PHP_URL_QUERY);

parse_str($query, $params);

$slug = get_magic_quotes_gpc() ? stripslashes($params['v']) : $params['v'];

CodePad.

trim()(或其变体)不起作用的原因是它接受一个字符列表(序数不重要),其中http://www.youtube.com/watch?v= 包含t。它确实接受要删除的字符串。

【讨论】:

  • 完美!谢谢谢谢谢谢!
  • 我对魔术引号检查笑了。让他们安息吧,阿门。 :)
  • @Jon:parse_str() 绝对感觉像是一个黑客;似乎他们只是在内部公开了解析该文本的代码。
  • @deceze:您可能想阅读relevant documentation
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-09
  • 2018-04-09
  • 2012-05-22
  • 2020-09-11
相关资源
最近更新 更多