Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Извлечь и суммировать числа из таблицы в текстовом файле
 
 автор: loneliness   (22.09.2008 в 21:14)   письмо автору
 
 

В текстовом файле имеется таблица вида:

17.09 13:51</td><td>1171</td><td>3.537705</td><td>789765XXXX</td><td>XXXXXXXXXXX</td><td>beeline_moscow</td></tr>
17.09 14:30</td><td>1171</td><td>3.937085</td><td>789765XXXX</td><td>XXXXXXXXXXX</td><td>baikalwestcom</td></tr>
17.09 14:31</td><td>1171</td><td>2.680045</td><td>789765XXXX</td><td>XXXXXXXXXXX</td><td>megafon_povolzhye</td></tr>
17.09 14:56</td><td>1171</td><td>4.283401</td><td>789765XXXX</td><td>XXXXXXXXXXX</td><td>mts</td></tr>
.................

Первая колонка дата, вторая короткий номер,третья- комиссия... Нужно извлечь из этого файла все значения третьей колонки(комиссию) в переменные, чтобы все их суммировать.
Подскажите, как можно реализовать такое извлечение?

  Ответить  
 
 автор: AcidTrash   (22.09.2008 в 21:59)   письмо автору
 
   для: loneliness   (22.09.2008 в 21:14)
 

Не слышали такое слово БД?
С ней операции намного легче делать.

  Ответить  
 
 автор: Loneliness   (22.09.2008 в 22:08)   письмо автору
 
   для: AcidTrash   (22.09.2008 в 21:59)
 

БД не слово, а аббревиатура. Я слышал и знаю много разных слов, уважаемый. Отнюдь не меньше Вас. Но это совершенно не имеет отношения к делу. Мне нужно не БД, не смотря на все ее удобства, а именно этот вариант реализовать.

  Ответить  
 
 автор: AcidTrash   (22.09.2008 в 22:32)   письмо автору
 
   для: Loneliness   (22.09.2008 в 22:08)
 

Ну хорошо,
попробуем так
<?php

$text
="17.09 13:51</td><td>1171</td><td>3.537705</td><td>789765XXXX</td><td>XXXXXXXXXXX</td><td>beeline_moscow</td></tr>
17.09 14:30</td><td>1171</td><td>3.937085</td><td>789765XXXX</td><td>XXXXXXXXXXX</td><td>baikalwestcom</td></tr>
17.09 14:31</td><td>1171</td><td>2.680045</td><td>789765XXXX</td><td>XXXXXXXXXXX</td><td>megafon_povolzhye</td></tr>
17.09 14:56</td><td>1171</td><td>4.283401</td><td>789765XXXX</td><td>XXXXXXXXXXX</td><td>mts</td></tr>"
;

preg_match_all("#</td><td>.*?</td><td>(.+?)</td>#",$text,$out);
for(
$i=0$i<count($out[1]); $i++){
$res += $out[1][$i];
}
print 
$res;

?>

P.S. Из файла не пробовал, возможно нужно будет добавить модификатор s.

  Ответить  
 
 автор: Trianon   (22.09.2008 в 22:46)   письмо автору
 
   для: AcidTrash   (22.09.2008 в 22:32)
 

в файле, надо надеяться, строка будет не только закрываться, но и открываться :)

  Ответить  
 
 автор: AcidTrash   (22.09.2008 в 22:54)   письмо автору
 
   для: Trianon   (22.09.2008 в 22:46)
 

>в файле, надо надеяться, строка будет не только закрываться, но и открываться :)
Я и сказал, что с файлом не пробовал.

  Ответить  
 
 автор: BinLaden   (22.09.2008 в 22:57)   письмо автору
 
   для: AcidTrash   (22.09.2008 в 22:32)
 

for($i=0; $i<count($out[1]); $i++){
$res += $out[1][$i];
}


<?php
$res 
array_sum($out[1]);
?>

  Ответить  
 
 автор: AcidTrash   (22.09.2008 в 23:14)   письмо автору
 
   для: BinLaden   (22.09.2008 в 22:57)
 

Хм. Посарказмичали? :)
Но только разницы в данном случае никакой, просто уж, что первое в голову пришло.

  Ответить  
 
 автор: xx77   (23.09.2008 в 00:24)   письмо автору
 
   для: AcidTrash   (22.09.2008 в 23:14)
 

странно что из таблицы уже кто-то вырезал пару рядов )

а так зависит ещё могут-ли быть пробелы в ячейке , и что может быть в остальных рядах
если всё так как здесь то можно даже так например
<?
$sum 
0;
function 
tabsum($match) {
global 
$sum;
$sum += $match[1];
return 
$match[1] . '<br/>';
}
$txt preg_replace_callback('#^(?>[^<]+</td><td>){2}([^<]+).+$#m''tabsum'$txt);

echo 
$txt '<hr/>' $sum;

  Ответить  
 
 автор: BinLaden   (23.09.2008 в 17:58)   письмо автору
 
   для: AcidTrash   (22.09.2008 в 23:14)
 

> Посарказмичали?
* Записывает слово в словарик *

> Но только разницы в данном случае никакой
Синус через ряды считаете или как?

* В сторону * Вроде советуешь человеку более оптимальное решение, а он пытается доказать, что он не баран...

  Ответить  
 
 автор: mihdan   (25.09.2008 в 14:21)   письмо автору
 
   для: BinLaden   (23.09.2008 в 17:58)
 

Хотя получается обратное

  Ответить  
 
 автор: BinLaden   (25.09.2008 в 17:20)   письмо автору
 
   для: mihdan   (25.09.2008 в 14:21)
 

Что имеете ввиду?

  Ответить  
 
 автор: mihdan   (25.09.2008 в 17:25)   письмо автору
 
   для: BinLaden   (25.09.2008 в 17:20)
 

>Вроде советуешь человеку более оптимальное решение, а он пытается доказать, что он не баран
Но по его постам делаем вывод, что он все же баран, нежелающий принять новых и правильных решений

  Ответить  
 
 автор: Drago   (23.09.2008 в 01:11)   письмо автору
 
   для: loneliness   (22.09.2008 в 21:14)
 

Вариант без регулярных выражений.

<?php
$file 
'data.txt';
$summ 0;

$fp fopen($file'r');
while (!
feof($fp))
    {
    
$row explode('</td><td>'fgets($fp));
    
$summ += (float)$row[2];
    }
fclose($fp);

echo 
$summ;
?>

  Ответить  
 
 автор: Loneliness   (24.09.2008 в 18:04)   письмо автору
 
   для: Drago   (23.09.2008 в 01:11)
 

Спасибо всем за отклик. Вы мне реально помогли, благодарю!

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования