0

是否可以仅显示来自 curl 收到的页面的 4 个结果?

这是我的脚本:

<?php
$ch = curl_init ("http://services.runescape.com/m=itemdb_rs/top100.ws?list=2&scale=0");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$page = curl_exec($ch);

preg_match('#<tbody[^>]*>(.+?)</tbody>#is', $page, $matches);
foreach ($matches as &$match) {
    $match = $match;
}
echo '<table>';
    echo $matches[0];
echo '</table>';

?>

结果

皮革护臂 皮革护臂 免费游戏物品 9 12 3 +7% 青铜头盔 青铜头盔 免费游戏物品 53 72 19 +6% 空气符文 空气符文 免费游戏物品 22 30 8 +6% 瓦洛克传送 瓦洛克传送 会员专属物品 969 1,255 286 +5% 传送到房屋 传送到房屋 会员专属物品 862 1,137 275 +5% 柚木原木 柚木原木 会员专属物品 83 111 28 +5% 水球 水球 会员专属物品 1,491 1,930 439 +5%

(这只是一块通常有大约 100 个结果)

那么有没有办法让我只喜欢显示 4 个结果?

~~~~~~~编辑~~~~~~

有没有办法把这个结果放在:"

Leather vambraces        9  12  3   +7%
Bronze helm                  53 72  19  +6%
Air rune                22  30  8   +6%
Varrock teleport        969 1,255   286 +5% 

对此:

Leather vambraces        
Bronze helm                  
Air rune                
Varrock teleport     

在像$item['name']?

4

2 回答 2

2

试试这个(更新)

 $ch = curl_init ("http://services.runescape.com/m=itemdb_rs/top100.ws?list=2&scale=0");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$page = curl_exec($ch);

preg_match('#<tbody[^>]*>(.+?)</tbody>#is', $page, $matches);
foreach ($matches as &$match) {
    $match = $match;
}
        $dom = new DOMDocument();
        @$dom->loadHTML('<?xml encoding="UTF-8">' . $match);
        $tables = $dom->getElementsByTagName('table');  
        $thArray = $tdArray = $array = array();
        $tr = $dom->getElementsByTagName('tr');
        $i = 0;
        $s = 0;
        $k=5;
        echo "table";
        foreach ( $tr as $tr ) 
        {   

            $thArray[] = $tr->nodeValue;
            $td = $dom->getElementsByTagName('td');
            ini_set('max_execution_time', 99999999999999999999 );
            foreach( $td as $td ) 
             {
                 ini_set('max_execution_time', 99999999999999999999 );
                 $thAr[] = $td->nodeValue;          
                   if($s<=$k)
                   {
                       $thArrays[$i][] =$thAr[$s];
                       $n = $s;
                       $t=$s+6;
                   }
                   $s++;              
             }

              $s= $n+1;
              $k=$t;

              $i++;


        }
        echo "<table>";
        for($i=0;$i<4;$i++)
        {   
        echo "<tr>";
        $row = $thArrays[$i];
        $ks  = count($row);

        for($k=0;$k<1;$k++)
        {
            echo "<td>";
            echo $row[$k];
            echo "</td>";           
        }
        echo "</tr>";       
        }
        echo "</table>";
        unset($thArray);
            unset($thArrays);

        exit;

像这种格式输出

Leather vambraces        
Bronze helm         
Air rune                
Varrock teleport        
于 2013-08-06T12:55:41.660 回答
0

很确定这可以满足您的要求:

preg_match_all('#<tr[^>]*>(.+?)</tr>#is', $page, $matches);
$items = array();
unset($matches[0][0]);
foreach ($matches[0] as $match) {
    $items[] = $match;
}
$items = array_slice($items,0,4); //Get first 4
echo '<table>';
    foreach($items as $item)
    {
        echo $item;
    }
echo '</table>';
于 2013-08-06T13:05:49.550 回答