Поиск и запись в файл

RаSH
На сайте с 13.11.2008
Offline
29
618

Здравствуйте.

Есть некоторый массив со значениями $name=array('Иван Иванов','Сергей','Александр К.','Дмитрий С');

Так же есть файл1, в каждой строке которого записаны определенные значения:

Номер,'Имя',Телефон_Домашн,Телефон_Сот);

Необходимо находить и записывать в файл2 те строки, в которых присутствует значение элементов массива name в файле1 в поле Имя.

Т.е. в теории: берем первый элемент массива(в данном примере Иван Иванов), открываем файл1 и проходим каждую строку в поиске данного значения. Находим - записываем в файл2 найденную строку. Далее берем 2 элемент. и т.д.

В теории все вроде бы просто, а вот в практике..:o

Каким образом можно реализовать поиск и запись по файлу из значений массива?

LEOnidUKG
На сайте с 25.11.2006
Offline
1725
#1

кусочек практики:

$name='имя';

$mas=file(наш файл);

foreach ($mas as $n)

{

поиск и запись в конец файла2

}

:)

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/
n0name
На сайте с 22.12.2006
Offline
54
#2

Теорию лучше изменить. Проходим файл построчно, вытаскиваем оттуда имя и потом ищем его в массиве $name

Сервис сравнения цена на VPS (http://vpska.com/)
LEOnidUKG
На сайте с 25.11.2006
Offline
1725
#3
n0name:
Теорию лучше изменить. Проходим файл построчно, вытаскиваем оттуда имя и потом ищем его в массиве $name

Интересно, а будет ли быстрее, не перебирать массив, а file_get_content и через strpos уже поиск )))

хотя там там же строчку всю нужно...

WT
На сайте с 08.10.2010
Offline
17
#4
n0name:
Теорию лучше изменить. Проходим файл построчно, вытаскиваем оттуда имя и потом ищем его в массиве $name

ИМХО, такой вариант и правда оптимальнее будет

За еду не работаю, зарабатываю здесь (http://www.sape.ru/r.amStvLXttk.php) Работа для ленивых - продвигай сайты автоматически (http://seopult.ru/ref.php?ref=1f6f897913cc593f)
LEOnidUKG
На сайте с 25.11.2006
Offline
1725
#5
n0name:
Теорию лучше изменить. Проходим файл построчно, вытаскиваем оттуда имя и потом ищем его в массиве $name

Кстати, крутая теория... только вот ничего, что нам нужна вся строчка, а не только имя :)

n0name
На сайте с 22.12.2006
Offline
54
#6
LEOnidUKG:
Интересно, а будет ли быстрее, не перебирать массив, а file_get_content и через strpos уже поиск )))

хотя там там же строчку всю нужно...

Навряд ли. Поиск в массиве по-быстрее будет, чем поиск вхождения в строке. К тому же большой файл через file_get_contents лучше не загружать.

LEOnidUKG:
Кстати, крутая теория... только вот ничего, что нам нужна вся строчка, а не только имя :)

Если мы файл построчно читаем у нас ведь эта строка где-то да и остается?

RaSH, вот код

<?php

$names = array('Иван Иванов', 'Сергей', 'Александр К.', 'Дмитрий С');
$data = file('foo.txt');


foreach ($data as $str)
{
$name = get_name_from_str($str);
if (in_array($name, $names))
{
// записываем в файл2 $str
}
}


function get_name_from_str($str)
{
$str_parts = explode(',', $str);
return substr($str_parts[1], 1, -1);
}
RаSH
На сайте с 13.11.2008
Offline
29
#7

Понаписали то ;) Сколько кодеров, столько и вариантов решения задачи)

n0name, LEOnidUKG, спасибо :)

И еще вопрос. Возможно и глупый, но все же.

Делаю запись в файл.

$fd = fopen($filename, "w");

fwrite( $fd , $numbenews.'{break}'.$w1->prt(1).'{break}\n');

fwrite( $fd , $numbenews.'{break}'.$w2->prt(2).'{break}\n');

fclose($fd);

пытаюсь сделать так, чтобы 2 запись шла с новой строки, использую \n, но перенос не происходит. в чем ошибка?!

n0name
На сайте с 22.12.2006
Offline
54
#8

Там, где \n нужно одинарные кавычки на двойные заменить

RаSH
На сайте с 13.11.2008
Offline
29
#9

n0name, благодарствую! Действительно, все было в кавычках.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий