собрать информацию из txt после запятой

Статус
В этой теме нельзя размещать новые ответы.

ftpman

Гуру форума
Регистрация
13 Июн 2008
Сообщения
193
Реакции
69
Имеются много файлов в txt с информацией видом:
PHP:
Имя, Телефон, Почта, Текст, Текст
Имя, Телефон, Почта, Текст, Текст
Имя, Телефон, Почта, Текст, Текст
Задача собрать только Почту из всех txt в 1 файл. Другими словами с каждой новой строки, надо забрать весь текст что после второй запятой до третьей, и вынести его в отдельный файл.
Результат в новом файле должен быть таким:
PHP:
Почта
Почта
Почта
Возможно ли такое сделать на php? Есть ли у кого хотя бы примерный готовый скрипт?
 
Предварительно создайте файл new.txt и задайте ему права на запись. Считываемый файл - file.txt.
Вот код:
PHP:
<?php
$fileout = "new.txt";
$fh = fopen($fileout, "a+");

$filein = file_get_contents("file.txt");
$filein = explode("\n",$filein);
$num = count($filein);

for ($i=0; $i < $num; $i++)	{
	$buf = explode(",",$filein[$i]);
	$res = substr($buf[2],1) . "\n";
	fwrite($fh, $res);
}

fclose($fh);

?>

Если работаете на виндовом сервере, то вместо "\n" нужно ставить "\r\n". Если есть необходимость автоматизировать считывание файлов, то это тоже можно делать в цикле.
 
Предварительно создайте файл new.txt и задайте ему права на запись. Считываемый файл - file.txt.
Вот код:
PHP:
<?php
$fileout = "new.txt";
$fh = fopen($fileout, "a+");
$filein = file_get_contents("file.txt");
$filein = explode("\n",$filein);
$num = count($filein);
for ($i=0; $i < $num; $i++)	{
	$buf = explode(",",$filein[$i]);
	$res = substr($buf[2],1) . "\n";
	fwrite($fh, $res);
}
fclose($fh);
?>
Если работаете на виндовом сервере, то вместо "\n" нужно ставить "\r\n". Если есть необходимость автоматизировать считывание файлов, то это тоже можно делать в цикле.

работает сенкс!
 
ещё вопрос, а как сделать что бы результат в txt был не такой:
PHP:
слово1
слово2

слово3




слово4
слово5

слово6
а нормальный:
PHP:
слово1
слово2
слово3
слово4
PHP:
$filein = trim(preg_replace("/[\r\n]+/m","\r\n", $filein));
не помогло :\
 
ещё вопрос, а как сделать что бы результат в txt был не такой:
PHP:
слово1
слово2
слово3
слово4
а нормальный:
PHP:
слово1
слово2
слово3
слово4
PHP:
$filein = trim(preg_replace("/[\r\n]+/m","\r\n", $filein));
не помогло :\
Не видно отличий между "таким" и нормальным
 
Извиняюсь... Поправил
В общем без пустых строк.
PHP:
слово1
слово2



слово3


слово4

слово5


слово6

нужно:

PHP:
слово1
слово2
слово3
слово4
 
Во-первых, filein - это массив и строковые функции к нему не применимы. У тебя в файл пишется переменная $res, вот ее и нужно обрабатывать
 
Во-первых, filein - это массив и строковые функции к нему не применимы. У тебя в файл пишется переменная $res, вот ее и нужно обрабатывать
Пробовал с переменной $res, результат всё в строку.
PHP:
Слово1Слово2Слово3...
 
PHP:
 		 			 <?php 
$fileout = "new.txt"; 
$fh = fopen($fileout, "a+"); 
$filein = file_get_contents("file.txt"); 
$filein = explode("\r\n",$filein); 
$num = count($filein); 
for ($i=0; $i < $num; $i++)    { 
    $buf = explode(",",$filein[$i]); 
    $res = substr($buf[2],1) . "\r\n"; 
    fwrite($fh, $res); 
} 
fclose($fh); 
?>
 
PHP:
 		 			 <?php 
$fileout = "new.txt"; 
$fh = fopen($fileout, "a+"); 
$filein = file_get_contents("file.txt"); 
$filein = explode("\r\n",$filein); 
$num = count($filein); 
for ($i=0; $i < $num; $i++)    { 
    $buf = explode(",",$filein[$i]); 
    $res = substr($buf[2],1) . "\r\n"; 
    fwrite($fh, $res); 
} 
fclose($fh); 
?>

а в чём различие с первым вариантом? код идентичен за исключением fopen a+
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху