-2

クラス「evenRowIndxView」を持つすべてのブロックで、クラス「StockItem」を使用して5番目の式をphpで解析するにはどうすればよいですか?

ソース html には、クラス「evenRowIndxView」を持ついくつかの「ブロック」があります。

<tr class="evenRowIndxView"   onclick="document.location = 'wmquerysnew.asp?refID=12105397&deststamp=59'">

  <td class="StockItem"    align='center'   >12105397</td>
  <td class="StockItem"  nowrap  align='right'   >100,00</td>
  <td class="StockItem"  nowrap  align='right'   >3268,00</td>
  <td class="StockItem"  nowrap  align='right'   >0,0305</td>
  <td class="StockItem"  nowrap  align='right'   >32,6800 ( +1,37%)</td>
  <td class="StockItem"  nowrap  align='right'   >199,5</td>
  <td class="StockItem"  nowrap  align='right'   >6519,64</td>
  <td class="StockItem"  nowrap  align='right'   >08.06.2013 12:11:36</td>

</tr>

<tr class="oddRowIndxView"   onclick="document.location = 'wmquerysnew.asp?refID=12105391&deststamp=57'">

  <td class="StockItem"    align='center'   >12105391</td>
  <td class="StockItem"  nowrap  align='right'   >90,85</td>
  <td class="StockItem"  nowrap  align='right'   >2968,96</td>
  <td class="StockItem"  nowrap  align='right'   >0,0305</td>
  <td class="StockItem"  nowrap  align='right'   >32,6798 ( +1,37%)</td>
  <td class="StockItem"  nowrap  align='right'   >99,5</td>
  <td class="StockItem"  nowrap  align='right'   >3251,64</td>
  <td class="StockItem"  nowrap  align='right'   >08.06.2013 12:04:41</td>

</tr>  

等...

4

2 に答える 2

1

シンプルで汚い正規表現ソリューションがあります。

if(preg_match_all("/<tr[^>]+evenRowIndxView[^>]+>(\s*<td[^>]+>[^<]+<\/td>\s*){4}\s*<td[^>]+StockItem[^>]+>([^<]+)<\/td>/i", $str, $matches))
{
     //print_r($matches);
    foreach($matches[2] as $match)
    {
        echo $match."<br>";
    }

}

指定されたサンプルでは、​​次のように 5 行ごとevenRowIndxViewに出力する必要があります。

32,6800 ( +1,37%)
于 2013-06-08T09:22:05.003 に答える
1

evenRowIndxViewまず、すべてのブロックを分離する必要があります。私は爆発を使用します

$blocks = explode("evenRowIndxView", $html);

次に同じことを行いますStockItem

foreach ($blocks as $block)
{
   $item = explode("StockItem", $block);
   //now your item should be at $item[4]


}

価値だけが欲しいと仮定すると

$str = '<td class="StockItem'.$item[4]; //this put back some HTML so it can be later removed with strip_tags
$value = strip_tags($str);

上記のコードは 100% 正確ではないかもしれませんが、そこからアイデアを得る必要があります。

于 2013-06-08T08:54:37.710 に答える