|
|
|
| Есть файл типа fruit.txt со строками типа
Апельсин | Сладкий
Слива| Кислая
Перец | Горький
|
Задача - Поиск слова (например Апельсин) в файле и возврат номера строки.
Помогите разобраться, какие функции использовать. | |
|
|
|
|
|
|
|
для: 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>";
}
?>
|
| |
|
|
|
|
|
|
|
для: 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;
}
?>
|
| |
|
|
|
|
|
|
|
для: 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;
|
| |
|
|
|
|
|
|
|
для: 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); | |
|
|
|