2012-02-08 79 views
-1

我使用以下代碼從Twitter中提取一些用戶名。我做過到目前爲止是 得到這樣的:修改PHP代碼以從文檔中提取特定字符串

[0] => com/USERNAME/statuses/[email protected] 
    [1] => com/ANOTHER_USERNAME/statuses/[email protected] 

,這是我的代碼..我怎麼能只提取用戶名?

$file = file_get_contents("http://search.twitter.com/search.rss?q=twitter"); 
    $file = strip_tags($file);   

    preg_match_all("([a-z0-9!#$%&'*+/=?^_`{|}~-]*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)\b)siU", $file, $matches); 

    echo '<pre>'; 
    print_r($matches); 
    echo '</pre>'; 

我這樣做是使用SimpleXML但我只得到第一個結果

$url="http://search.twitter.com/search.atom?q=hello"; 
$twitter_xml = simplexml_load_file($url); 

foreach ($twitter_xml->entry->author as $key) { 
    $author = $key->{"uri"}; 

    echo"<li><h5>$author</h5></li>"; 
} 
+0

所以是模式總是'com'斜槓用戶名斜線?如果是這樣,正則表達式是不必要的... – lonesomeday 2012-02-08 21:52:28

+0

看到你的其他問題:http://stackoverflow.com/questions/9199041/how-to-extract-the-content-of-uri-uri-in-a-xml-document – salathe 2012-02-08 21:53:17

回答

5

停止這樣做。當你有多個適當結構的機器可讀格式時,使用正則表達式很愚蠢。

您可以使用SimpleXML來解析RSS提要,然後拉出你所需要的元素,或者您可以使用更容易使用JSON表示工作(http://search.twitter.com/search.json?q=twitter)並運行它通過json_decode獲得對象的一個​​不錯的PHP數組,所有你想要提取的數據已經爲你打破。

+1

準確無誤 - 當其他解決方案更加可行時,無需像使用正則表達式那樣盡情享用正則表達式。 – phatskat 2012-02-08 21:55:25

+0

你好,我使用simplexml更新了我的問題,但我只得到一個結果。 – EnexoOnoma 2012-02-08 22:27:05

+0

首先,您將通過JSON獲得更簡單的時間。其次,你不能做foreach($ twitter_xml-> entry-> author)'。你必須做foreach($ twitter_xml-> entry),然後在那裏處理作者。 – ceejayoz 2012-02-08 22:34:45

1

強大的配方:

  1. 解析器,可能simpleXMLDOM,也許其他人,
  2. XPath查詢(//guid想到)。
  3. parse_url($content, PHP_URL_PATH);從URL
  4. explode('/',$path)
  5. 獲取該數組的第一個項目獲取的路徑。

現在,煮出的代碼...

+0

你好,我使用simplexml更新了我的問題,但我只得到一個結果。 – EnexoOnoma 2012-02-08 22:26:34

+0

轉到步驟(2),'xpath()'查詢....另外,ceejayoz是正確的:json路由在這裏很容易,可能更有效。 – Wrikken 2012-02-08 22:29:25

+0

好的,但是不是寫一個我不知道該怎麼做的新代碼,而是爲什麼我不能在我現有的代碼上得到答案?我正在尋找一個快速解決方案,沒有什麼專業。 – EnexoOnoma 2012-02-08 22:34:07

相關問題