Если я правильно понимаю вашу проблему, это то, как вы должны это сделать.
Прежде всего, я предлагаю вам перехватить каждую строку вместо отдельных ячеек, а затем проанализировать каждую строку независимо.
Так что в этом примере я предполагаю, что ваша строка заключена в теги tr
:
<tr>
<td><a href="/subname/index.jsp">SubName</a></td> <!-- This is the name of the subscription -->
<td>Comment regarding the subscription</td><!-- Comment -->
<td><strong>0,-</strong></td><!-- Monthly fee -->
<td>0,49</td><!-- Price per minute -->
<td>0,49</td><!-- Price per SMS -->
<td>1,99</td><!-- Price per MMS -->
</tr>
Если в начале или в конце больше ячеек, вам просто нужно соответствующим образом скорректировать индексы. Также я не тестировал этот код, поэтому там могут быть некоторые ошибки, но общая идея должна быть в порядке.
//here we will store parsed values
$data = array();
// you may want to filter this a bit if you want some rows to be skipped
foreach ($html->find('tr') as $tr) {
// we get first cell in the row, find a element inside and take it's inner text and so on
$name = $tr->children(1)->find('a')->innertext;
$comment = $tr->children(2)->innertext;
$monthyFee = $tr->children(3)->find('strong')->innertext;
$pricePerMin = $tr->children(4)->innertext;
$pricePerSms = $tr->children(5)->innertext;
$pricePerMms = $tr->children(6)->innertext;
// create new entry in $data array formatted as you wanted it
$data[$name] = array($comment, $monthlyFee, $pricePerMin, $pricePerSms, $pricePerMms);
}
Важное замечание: это не помешает вам перезаписать некоторые данные, если ваше имя не уникально, поэтому вы должны быть уверены, что оно действительно так. Это связано с тем, что ассоциативные массивы не могут иметь несколько ключей с одинаковым значением.