Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. 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($cntnts0$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 Яндекс.Метрика Яндекс цитирования