Цитата:
Сообщение от seoseo
Есть текстовый файл со словами. Одно слово на строку. Кол-во строк скажем 5 тысяч. Допустим мне нужны слова с 500-й по 1000-ю строки по 100 в каждый отдельный текстовик. При чем нужно так, чтобы скрипт брал 1-е слово в строке под номером 500, называл им текстовый файл, а остальные 99, то есть с 501-го по 600-е клал уже в сам текстовик и сохранял. Далее брал 601-е слово, также называл им новый текстовый файл и 99-х остальных (с 602-го по 700-й) сохранял уже в этот текстовый файл. Ну и так до 1000-го как и было задано в начале. Как такое реализовать на пхп кто-нибудь может помочь?
|
Цитата:
и 99-х остальных (с 602-го по 700-й) сохранял уже
|
Вы имели ввиду с 601го по 700ый.
Если да то пожалуйста:
txt файл
db.txt который должен быть в папке со скриптом.
PHP код:
key 1
key2
....
key1000
Создайте папку
db и установите ей
права CHMOD 0777
Создаем php файл и копируем туда код.
PHP код:
<?php
$dirname = "./db/"; //Имя папки, куда сохраняется результат. Слэш на конце обязательно!!!
if(isset($_POST['submit'])){ $sub = true; }else{ $sub = false; }
if($sub){
if(isset($_POST['ot'])){ $ot = trim($_POST['ot']); }
if(isset($_POST['do'])){ $do = trim($_POST['do']); }
if(isset($_POST['po'])){ $po = trim($_POST['po']); }
if(empty($ot) || empty($do)){$ot = 0;}
if(empty($po)){
echo "Не ввели все поля."; die;
}
$arr_all_db = file("db.txt");
if(empty($do)){$do = count($arr_all_db);}
for($i=$ot; $i<$do; $i++){
$arr_obrez[] = $arr_all_db[$i];
}
$key_chunk = array_chunk($arr_obrez, $po);
for($y=0; $y<count($key_chunk); $y++){
$namefile = trim($key_chunk[$y][0]);
$key_replace = str_replace(" ", "-", $namefile);
$fp = fopen($dirname.$key_replace.".txt", "a");
for($j=1; $j<count($key_chunk[$y]); $j++){
$fwrite = trim($key_chunk[$y][$j])."\n";
fwrite($fp, $fwrite);
}
fclose($fp);
ob_flush();
flush();
echo "<a href=".$dirname.$key_replace.".txt target=_blank>".$namefile."</a> <BR>\n";
}
}else{
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Разбивка ключевых слов по файлам</title>
<style type="text/css">
<!--
BODY {
FONT-SIZE: 11px;
COLOR: #333333;
FONT-FAMILY: Tahoma, Helvetica, sans-serif;
margin-top: 2px;
margin-right: 0px;
margin-bottom: 0px;
margin-left: 2px;
}
A {
FONT-FAMILY: Tahoma, Helvetica, sans-serif;
TEXT-DECORATION: underline;
color: #263724;
}
a:hover {
font-family: Tahoma, Helvetica, sans-serif;
font-size: 11px;
color: #263724;
text-decoration: none;
}
INPUT {
BORDER-RIGHT: #7f9db9 1px solid;
PADDING-RIGHT: 2px;
BORDER-TOP: #7f9db9 1px solid;
PADDING-LEFT: 5px;
FONT-SIZE: 11px;
PADDING-BOTTOM: 1px;
BORDER-LEFT: #7f9db9 1px solid;
COLOR: #333333;
PADDING-TOP: 1px;
BORDER-BOTTOM: #7f9db9 1px solid;
FONT-FAMILY: Tahoma, Helvetica, sans-serif;
BACKGROUND-COLOR: #f6f6f6;
HEIGHT: 18px;
}
table {
border-collapse: collapse;
}
-->
</style>
</head>
<body>
<table height="100%" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td width="78%">
<table border="0" cellpadding="5" cellspacing="0">
<tr>
<td>
<form action="index.php" method="post">
<table height="100%" border=0 align=center>
<tr>
<td valign="middle"> <fieldset
style="WIDTH: 180px"><legend><strong>Параметры</strong></legend>
<table cellspacing=2 cellpadding=2 align=center border=0>
<td rowspan="2" align="right">От:
<tr>
<td>
<input style="WIDTH: 30px" name="ot"> </td>
</tr>
<tr>
<td align=right>До:</td>
<td><input style="WIDTH: 30px" type="text" name="do">
</td>
</tr>
<tr>
<td align=right>По:</td>
<td>
<input style="WIDTH: 30px" type="text" name="po"> </td>
</tr>
<tr>
<td colspan="2" align=middle>
<div align="right">
<input type="submit" value="раздилить" name="submit">
</div></td>
</tr>
</table>
</fieldset> </td>
</tr>
</table>
</form>
</td>
</tr>
</table>
</td>
</tr>
</table>
</body>
</html>
<?php
}
?>
Заспускаем скрипт, указываем
от например 500, тогда скрипт начнет с 500ой отметке.
До например 1000, скрипт закончит цикл на 1000ой отметке. Разбив
по например 100, скрипт поделит 500 на 100 в многомерный массив, на 5 частей, каждый первый ключевик будет именем файла, остальные 99 будут записыватся в этот файл.
от и
до могут быть пустыми, тогда будет поделена вся база..
В процессе работы, скрипт будет выводить ссылки на созданые файлы.
Успехов..