2011-12-05 31 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,只是抓住了它的一部分。 –