2011-12-05 30 views
1

所以我有这个RSS文件,我试图从中获取URL的一部分。所以这就是我试过的(这不起作用)。我怎样才能抓取我想要的文本 - PHP

我有了这个网址我可以很轻松地:

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()的第二个参数中的任何单独字符都被取出,这不是我想要的。有没有其他解决方案可以用来抓取我想要的文字?

任何帮助,非常感谢。

+0

@AurelioDeRosa:不是真的是一个笨蛋; OP不想使用'preg_match()'。 – alex

+2

@alex其实我不明白他在哪里要求一个非正则表达式的解决方案。 –

+0

@AurelioDeRosa \t他没有,但另一个问题是如何用一个工具'preg_match()'明确地解决这个问题。 – alex

回答

5

这是我会怎么做?

$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。它确实不是接受要删除的字符串。

+0

完美!谢谢你,谢谢你,谢谢你! –

+0

我对魔术引号检查有一个笑声。让他们安息吧,阿门。 :) – Jon

+0

@Jon:'parse_str()'绝对感觉像是一个黑客;他们似乎只是公开了内部解析该文本的代码。 – alex

0

使用PHP,你不能抓住v的值吗?

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

如果OP在YouTube网站上工作,那么这将起作用:P – alex

+0

也许,我不知道如何。我从一个XML文件创建的数组中获取这个URL,而我实际上并没有访问这个URL,只是抓住了它的一部分。 –