2011-06-13 36 views
0

我正在构建一个PHP程序,基本上只抓取来自我的Twitter提要的图像链接并将它们显示在页面上,我有3个组件,我已经设置好了所有工作都很好。传递数组值时出现问题

第一个组件是twitter oauth组件,它抓取tweet文本并创建一个数组,它本身很好地工作。

第二个是处理推文并只返回包含图像链接的推文的函数,这也很好。

程序在第三节处理链接并显示图像时发生故障,我没有任何问题可以自行运行,并且从尝试排除故障的尝试看起来,它在$ images( );数组,因为该数组是空的。

我敢肯定,我犯了一个愚蠢的错误,但我一直在试图找到这一点,现在似乎无法修复它。任何帮助将是伟大的!多谢你们!

代码:

<?php 

if ($result['socialorigin']== "twitter"){ 
$twitterObj = new EpiTwitter($consumer_key, $consumer_secret); 
$token = $twitterObj->getAccessToken(); 
$twitterObj->setToken($result['oauthtoken'], $result['oauthsecret']); 
$tweets = $twitterObj->get('/statuses/home_timeline.json',array('count'=>'200')); 

     $all_tweets = array(); 
     $hosts = "lockerz|yfrog|twitpic|tumblr|mypict|ow.ly|instagr"; 



     foreach($tweets as $tweet) { 

     $twtext = $tweet->text; 

     if(preg_match("~http://($hosts)~", $twtext)){ 

     preg_match_all("#(^|[\n ])([\w]+?://[\w]+[^ \"\n\r\t<]*)#ise", $twtext, $matches, PREG_PATTERN_ORDER); 

     foreach($matches[0] as $key2 => $link){ 

     array_push($all_tweets,"$link"); 

     } 

     } 

     } 
function height_compare($a1, $b1) 
{ 
    if ($a1 == $b1) { 
     return 0; 
    } 
    return ($a1 > $b1) ? -1 : 1; 
} 

foreach($all_tweets as $alltweet => $tlink){ 
$doc = new DOMDocument(); 
// Okay this is HTML is kind of screwy 
// So we're going to supress errors 
@$doc->loadHTMLFile($tlink); 

// Get all images 
$images_list = $doc->getElementsByTagName('img'); 

$images = array(); 
foreach($images_list as $image) { 

    // Get the src attribute 
    $image_source = $image->getAttribute('src'); 

    if (substr($image_source,0,7)=="http://"){ 
    $image_size_info = getimagesize($image_source); 

    $images[$image_source] = $image_size_info[1]; 
    } 
} 



// Do a numeric sort on the height 
uasort($images, "height_compare"); 
$tallest_image = array_slice($images, 0,1); 
$mainimg = key($tallest_image); 

echo "<img src='$mainimg' />"; 


} 
print_r($all_tweets); 
print_r($images); 

} 
+0

子字符串比较是否有效? – 2011-06-13 14:19:55

+0

该程序的每个元素都可以完美地工作,它只在我将它们放在一起时才会出现故障,子字符串比较不起作用,因为$ images()数组没有奇怪地累积任何链接 – 2011-06-13 14:45:18

回答

1

更改for循环,你获取的实际图像到images阵列移动以外的for循环。这将防止循环每次都清除它。

$images = array(); 
foreach($all_tweets as $alltweet => $tlink){ 
    $doc = new DOMDocument(); 
    // Okay this is HTML is kind of screwy 
    // So we're going to supress errors 
    @$doc->loadHTMLFile($tlink); 

    // Get all images 
    $images_list = $doc->getElementsByTagName('img');  
    foreach($images_list as $image) { 

    // Get the src attribute 
    $image_source = $image->getAttribute('src'); 

    if (substr($image_source,0,7)=="http://"){ 
     $image_size_info = getimagesize($image_source); 

     $images[$image_source] = $image_size_info[1]; 
    } 
    } 

    // Do a numeric sort on the height 
    uasort($images, "height_compare"); 
    $tallest_image = array_slice($images, 0,1); 
    $mainimg = key($tallest_image); 

    echo "<img src='$mainimg' />"; 
} 
+0

不幸的是我移动了foreach循环上面的数组,仍然没有运气,当我打印数组它仍然返回空,我不明白为什么会发生这种情况,如果我运行的代码只有一个数组或链接它完美的作品,但联合与其他部分一起下降管 – 2011-06-13 14:42:42