Return to Snippet

Revision: 63665
at May 28, 2013 23:57 by graceman9


Initial Code
<?php if (!empty($_FILES)): ?>
<?php

	$allowedExts = array("zip");
	$extension = end(explode(".", $_FILES["file"]["name"]));
	if ($_FILES["file"]["size"] < 5000000 && in_array($extension, $allowedExts)) {
		if ($_FILES["file"]["error"] > 0) {
			echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
		}
		else {
			$date = date('Y-m-d_H-i-s');

			// // upload info
			// echo "Upload: " . $_FILES["file"]["name"] . "<br>";
			// echo "Type: " . $_FILES["file"]["type"] . "<br>";
			// echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
			// echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br>";
			// exit;

			// unzip
			$zip = new ZipArchive;
			$res = $zip->open($_FILES["file"]["tmp_name"]);
			$zip_ok = FALSE;
			if ($res === TRUE) {
				$dir = 'files/'. $date;
				mkdir($dir);
				$zip->extractTo($dir);
				$zip->close();
				$zip_ok = TRUE;
			}

			if (!empty($dir)) {

				// process
				$result = glob('./'. $dir .'/*.txt');
				if (!empty($result)) {
					foreach($result as $fname) {
						preg_match('|^\.\/'. $dir .'/(.*)$|Uis', $fname, $mass);
						$uploadfile = $mass[1];
						// Загружаем файл в массив
						// $get_array = file($uploadfile);
						$get_array = file($dir .'/'. $uploadfile);

						foreach($get_array as $line) {
							@$line = iconv("UCS-2", "UTF-8", $line);
							$pos = strpos($line, '+380');
							if ($pos !== FALSE) {
								$sub = substr($line, $pos);
								$ars[] = $sub;
							}

							// preg_match('|^From\: \+380([0-9]+)$|Uis', $line, $massive);
							// if(@$massive[1] != '') {
							// $ars[] = '+380'.@$massive[1];
							// //$active_sheet->setCellValueByColumnAndRow(0, $key, '+380'.$massive[1]);
							// }

						}
					}
					$uniq = array_unique($ars);
					$key = 1;
					$output_array = array();
					foreach($uniq as $value) {
						$output_array[] = $value;
						$key++;
					}

					// Имя будущего файла
					$filename = $date;

					header("Content-disposition: attachment; filename=". $filename .".csv");
					header("Content-Type: text/csv");
					$separator = empty($_POST['separator']) ? "
" : $_POST['separator'];
					print implode($separator, $output_array);
					exit();
				}
				else {
					echo '<div class="error">Ошибка: архив не содержит текстовых файлов, или они несоответствуют требуемому формату.</div>';
				}

			}

		}
	}
	else {
		echo '<div class="error">Ошибка: недопустимый формат файла.</div>';
	}
?>

	<div class="back"><a href="./" title="Вернуться к форме">Вернуться к форме</a></div>
<?php else: ?>
<html>
<head>
	<meta charset="utf-8">
	<title>test</title>
	<style type="text/css">
		.main {
			margin: 100px;
			text-align: center;
		}
		.form-wrapper {
		}
		.form-wrapper input[type="submit"] {
		}
		.error {
			color:red;
			padding: 5px;
			border: 1px solid gray;
		}
		.back {
		}
		.back a {
			padding: 5px;
			font-size: 1.5em;
		}
		.main pre {
			text-align: left;
		}
		.tip {
			color: #999;
			font-size: 12px;
		}
	</style>
</head>
<body>
<div class="main">
	<div class="form-wrapper">
		<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post" enctype="multipart/form-data">
			<label for="file" class="tip">Символ-разделитель:</label>
			<input type="text" name="separator" value="" placeholder="">
			<br><span class="tip">По-умолчанию (оставить пустым) значения разделены новой строкой (
).</span>
			<br>
			<br>
			<br>
			<label for="file">Файл-архив:</label>
			<input type="file" name="file" id="file">
			<input type="submit" name="submit" value="Отправить">
			<br><span class="tip">Требуется архив формата *.zip, содержащий в корне все файлы. Для этого нужно выделить все файлы и добавить их в архив, а добавлять в архив папку с файлами.</span>
		</form>
	</div>
</div>
</body>
</html>
<?php endif; ?>

Initial URL


Initial Description
Upload special *.zip file with *.txt data.
*.txt data format is between tags:
<txt>
From: +380990581747
Date: 21.02.2013
Time: 16:42
Content: 
14
</txt>

Initial Title
Upload archive, unzip, process and output multiple *.txt files

Initial Tags


Initial Language
PHP