我正在构建一个程序,该程序使用公共主题标签显示特定用户组的Twitter提要。该程序从表单中的用户输入获取用户名数组和主题标签。我正在使用正则表达式(我不太喜欢的东西)来清除包含主题标签的推文,然后我想回应一下。但是,该计划目前尚未运作。这是我的工作:
<?php
$hash = $_GET['hash'];
$users = $_GET['users'];
$users = str_replace(" ", "", $users);
$hash = str_replace(" ", "", $hash);
$users = explode(",",$users);
$regex = "/^[#]+[a-zA-Z0-9_]+[ ]$/";
$url = 'http://search.twitter.com/search.json?q='.$user.'&lang=en&rpp=100';
foreach($users as $user){
$jsontwitter = file_get_contents($url);
$twitter = json_decode($jsontwitter, true);
$twittertext = $twitter["results"];
if(preg_match($regex, $twittertext['text'])){
foreach($twittertext as $text){
echo '<a href="http://twitter.com/'.$text['from_user'].'">@'.$text['from_user'].'</a>: '.$text['text'].'<br>';
}
}
}
?>
有什么建议吗?
答案 0 :(得分:0)
你应该先纠正错别字。您的q =变量为空,因为第8行上的变量未在上面定义。看来你可能想在那里使用'$ users',如第3行所定义。我将从命令行测试(如下所示),在第2行和第3行设置静态变量。将print语句放在最后以确定你的失败点。
$ php test.html
警告:file_get_contents(http://search.twitter.com/search.json?q=&lang=en&rpp=100):无法打开流:HTTP请求失败! HTTP / 1.0 403禁止
答案 1 :(得分:0)
在朋友的帮助下弄明白了。 $ url变量需要在for循环中才能使用定义的$ user变量运行搜索。从那里,json被返回,解码,结果通过另一个for循环运行,以隔离包含指定主题标签的单个推文,使用if语句中的正则表达式。然后,这些推文被呼出。另外,处理正则表达式的方式不正确 - 它正在查找以#开头并包含任何字符的字符串,以空格结尾。应该查找一个字符串,其中包含#的任意位置,后跟$ hash变量,后跟一个空格。
最终的工作脚本:
<?php
$hash = $_GET['hash'];
$users = $_GET['users'];
$users = str_replace(" ", "", $users);
$hash = str_replace(" ", "", $hash);
$users = explode(",",$users);
$regex = "/($i)#". $hash ."/";
foreach($users as $user){
$url = 'http://search.twitter.com/search.json?q='.$user.'&lang=en&rpp=100';
$jsontwitter = file_get_contents($url);
$twitter = json_decode($jsontwitter, true);
$twittertext = $twitter["results"];
foreach($twittertext as $text){
if(preg_match($regex, $text['text'])){
echo '<a href="http://twitter.com/'.$text['from_user'].'">@'.$text['from_user'].'</a>: '.$text['text'].'<br>';
}
}
}
?>