我使用以下代码从Twitter中提取一些用户名。到目前为止我所做的是 得到这些:
[0] => com/USERNAME/statuses/167362593990778881USERNAME@twitter.
[1] => com/ANOTHER_USERNAME/statuses/167362593390997506ANOTHER_USERNAME@twitter.
这是我的代码..我怎样才能只提取用户名?
$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 :(得分:5)
停止这样做。当你有多种结构合理,机器可读的格式时,使用正则表达式是愚蠢的。
您可以使用SimpleXML来解析RSS提要并提取所需的元素,或者您可以更轻松地使用JSON表示(http://search.twitter.com/search.json?q=twitter)并通过json_decode
运行它来获取一个很好的PHP对象数组,你想要提取的所有数据已经为你完成了。
答案 1 :(得分:1)
强大的食谱:
simpleXML
或DOM
,也许是其他人,//guid
浮现在脑海中)。parse_url($content, PHP_URL_PATH);
从网址explode('/',$path)
现在,烹饪代码......