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

Форум PHP

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

 

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

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

тема: Возврат номера строки из текстового файла
 
 автор: mmodem   (06.09.2009 в 22:55)   письмо автору
 
 

Есть файл типа fruit.txt со строками типа
Апельсин | Сладкий 
Слива| Кислая
Перец | Горький

Задача - Поиск слова (например Апельсин) в файле и возврат номера строки.
Помогите разобраться, какие функции использовать.

  Ответить  
 
 автор: DEM   (06.09.2009 в 23:10)   письмо автору
 
   для: mmodem   (06.09.2009 в 22:55)
 

Самый простой (но наверняка не быстрый) способ, что-то вроде:

<?php
$file 
= file("file.txt");
for(
$i=0;$i<(count($file)-1);$i++)
{
  if(
strstr("Апельсин", $file[$i]))
    echo 
"Есть в строке ".($i+1)." <BR>";
  else
    echo 
"Нет в строке ".($i+1)." <BR>";
}

?>

  Ответить  
 
 автор: mmodem   (06.09.2009 в 23:23)   письмо автору
 
   для: DEM   (06.09.2009 в 23:10)
 

Спасибо! Попробую разобраться...

  Ответить  
 
 автор: Temp   (07.09.2009 в 05:06)
 
   для: mmodem   (06.09.2009 в 23:23)
 

<?php
$search 
= "апельсин";
$file = "file.txt";
file_exists($file) ? $TextFile = file($file) : exit("notfile");
foreach(
$TextFile as $key => $value)
{
    if(
stristr($value, $search)) echo $search." в строке ".$key;
}
?>

  Ответить  
 
 автор: heed   (07.09.2009 в 09:57)   письмо автору
 
   для: mmodem   (06.09.2009 в 22:55)
 

>Задача - Поиск слова (например Апельсин) в файле и возврат номера строки.
<?
$cntnts 
= file_get_contents('test_file.txt');
$pos = strpos($cntnts, 'Апельсин');
if (
$pos !== FALSE) echo substr_count(substr($cntnts, 0, $pos), "\n");
else echo 
'апельсинов нет';
такое сработает и на слово Апельсино-сливы


upd//
если файл оч большой, лучше читать его построчно
<?
$match 
= FALSE;
$i = 0;
$hf = fopen('test_file.txt', "r");

while (!
feof($hf)) {
    
$buf = fgets($hf); # максимальная длинна строки default 1024
    
if (strpos($buf, 'Апельсин') !== FALSE) {
        
$match = $i;
        break;
    }
    
$i++;
}
echo (
$match === FALSE) ? 'апельсинов нет': $match;

  Ответить  
 
 автор: Visavi   (07.09.2009 в 21:26)   письмо автору
 
   для: mmodem   (06.09.2009 в 22:55)
 

вот готовая функция
<?php
function search_string($file, $str, $ceil) {   

if (
file_exists($file)){
$files = file($file);

foreach(
$files as $key=>$value){
$data = explode("|", $value);

if (
$data[$ceil]==$str){
$data['line'] = $key;
return 
$data; break;
}}}

return 
false;
}


возвращает саму строку в виде массива и дополнительно номер строки
if ($data[$ceil]==$str){ можете заменить если нужен не точный поиск

пример использования в вашем случае
$string = search_string("fruit.txt", 'Апельсин', 0);

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

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