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

Форум PHP

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

 

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

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

тема: Поиск в тексте
 
 автор: xxxLEOxxx   (07.01.2008 в 10:44)   письмо автору
 
 

Как можно написать код реализующий следующее: открытие текстового файла(ну это понятно), поиск строки в которой содержиться summa=500, и записи в переменную значения(500)

   
 
 автор: bronenos   (07.01.2008 в 10:58)   письмо автору
 
   для: xxxLEOxxx   (07.01.2008 в 10:44)
 

надо искать summa=500 или summa={число}

   
 
 автор: xxxleoxxx   (07.01.2008 в 11:11)   письмо автору
 
   для: bronenos   (07.01.2008 в 10:58)
 

не совсем вас понял. Вообщем вообще суть скрипта в следующем: есть папка в ней куча файлов, в начале каждого файла есть строка summa=500 и вторая строка summa1=300(ну значения естественно везде разные). Надо все эти суммы прочитать и соответсвенно сложить. В принципе все понятно кроме того как извлечь значения из файла...

   
 
 автор: kasmanaft   (07.01.2008 в 11:14)   письмо автору
 
   для: bronenos   (07.01.2008 в 10:58)
 

Дык, это, думаю, xxxLEOxxx самому понятно, что надо искать :))

xxxLEOxxx, читайте весь файл построчно с помощью fgets(), при этом с помощью, например, strpos() ищите свою "summa=". Если есть, можно опять же с помощью strpos() обнаружить первый пробел после найденной "summa=" (или что там у вас после числа стоит) и с помощью substr() это число "вырезать".

Или можно рег. выражениями попробовать (но с циклом, наверное, нагрузки будут) :
if (preg_match_all("|summa=(\d+)|", $string, $matches))
    print_r ($matches[1]); // массив с числами (если может быть несколько "summa=" в строке)

   
 
 автор: xxxleoxxx   (07.01.2008 в 11:58)   письмо автору
 
   для: kasmanaft   (07.01.2008 в 11:14)
 

Пробовал вот так, не получилось(((


<?php

$fh
=fopen("test.htm","r") or die("ошибка");
while(!
feof($fh))
{
if(
strpos(fgets($fh),'тест')==true) echo fgets($fh).'<br>';
}

?>

   
 
 автор: kasmanaft   (07.01.2008 в 12:14)   письмо автору
 
   для: xxxleoxxx   (07.01.2008 в 11:58)
 

Попробуйте strpos(fgets($fh),'тест')==true заменить на
strpos(fgets($fh),'тест')!==false

   
 
 автор: mihdan   (07.01.2008 в 14:32)   письмо автору
 
   для: xxxLEOxxx   (07.01.2008 в 10:44)
 

test.txt


summa=500
summa1=502
fdfvdfvdfvdfvdf
vdfvdfvdfhjjjj


test.php


<?php
$lines 
file('test.txt');
$one explode('='$lines[0]);
$two explode('='$lines[1]);
$summ = (int)$one[1] + (int)$two[1];

echo 
$summ;
?>


Выводит 1002

   
Rambler's Top100
вверх

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