2012-02-08 20 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

相关问题