Форум успешных вебмастеров - GoFuckBiz.com

  Форум успешных вебмастеров - GoFuckBiz.com > Бизнес-решения > Скрипты, программы и технические решения
Дата
USD/RUB58.7570
BTC/USD0.0000
Скрипты, программы и технические решения Обсуждаем скрипты, программы и новые технологии.

Закрытая тема
Опции темы Опции просмотра
Старый 10.04.2009, 11:53   #1
seoseo
Senior Member
 
Регистрация: 12.11.2007
Сообщений: 654
Бабло: $18120
Отправить сообщение для seoseo с помощью ICQ
По умолчанию Как такое реализовать на пхп

Есть текстовый файл со словами. Одно слово на строку. Кол-во строк скажем 5 тысяч. Допустим мне нужны слова с 500-й по 1000-ю строки по 100 в каждый отдельный текстовик. При чем нужно так, чтобы скрипт брал 1-е слово в строке под номером 500, называл им текстовый файл, а остальные 99, то есть с 501-го по 600-е клал уже в сам текстовик и сохранял. Далее брал 601-е слово, также называл им новый текстовый файл и 99-х остальных (с 602-го по 700-й) сохранял уже в этот текстовый файл. Ну и так до 1000-го как и было задано в начале. Как такое реализовать на пхп кто-нибудь может помочь?
seoseo вне форума  
Старый 10.04.2009, 12:49   #2
wal
Member
 
Регистрация: 18.08.2008
Сообщений: 76
Бабло: $490
По умолчанию

<?
$file = file($argv[1]);

$b = $argv[2];
$e = $argv[3];
$c = $argv[4];

for($i = $b - 1; $i < $e && $i < count($file); $i += $c) {
$fp = fopen(trim($file[$i]).".txt", "w+");
for($j = 1; $j < $c && $i + $j < $e && $i +$j < count($file); $j++) {
fwrite($fp, trim($file[$i + $j])."\n");
}
fclose($fp);
}
?>


вроде так...

запускать из консоли:
php -f script.php keyfile begin end count

пример:
php -f script.php mykey.txt 500 1000 100

script.php - тута сам скрипт
keyfile - файло со словами
begin - начало(500)
end - конец(1000)
count - по скока слов в блоке(100)

Последний раз редактировалось wal; 10.04.2009 в 17:16.
wal вне форума  
Старый 10.04.2009, 12:52   #3
WebNinja
grablab.org
 
Аватар для WebNinja
 
Регистрация: 18.09.2007
Адрес: Thailand
Сообщений: 4,903
Бабло: $322214
Отправить сообщение для WebNinja с помощью ICQ Отправить сообщение для WebNinja с помощью Skype™
По умолчанию

del

Последний раз редактировалось WebNinja; 10.04.2009 в 14:50.
WebNinja вне форума  
Старый 10.04.2009, 13:13   #4
seoseo
Senior Member
 
Регистрация: 12.11.2007
Сообщений: 654
Бабло: $18120
ТС -->
Отправить сообщение для seoseo с помощью ICQ
автор темы ТС По умолчанию

wal

Такую ошибку кидает в процессе выполнения.

Error in my_thread_global_end(): 2 threads didn't exit

Данная ошибка вылетает на двух одинаковых кеях.
seoseo вне форума  
Старый 10.04.2009, 13:22   #5
wal
Member
 
Регистрация: 18.08.2008
Сообщений: 76
Бабло: $490
По умолчанию

у тя че-то с модулем для работы с mysql из php...

скрипт тут не причем


==============

подправил чуток скрипт, терь точно работатет как тебе нужно, даже не поленился сам протестить =)
и с командой запуска чуток ошибся =) забыл указать сам скрипт...

Последний раз редактировалось wal; 10.04.2009 в 13:37.
wal вне форума  
Старый 15.04.2009, 19:25   #6
AlexWM
Ебланнед
 
Регистрация: 25.04.2008
Сообщений: 101
Бабло: $10120
По умолчанию

Цитата:
Сообщение от 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 будут записыватся в этот файл.

от и до могут быть пустыми, тогда будет поделена вся база..

В процессе работы, скрипт будет выводить ссылки на созданые файлы.

Успехов..
AlexWM вне форума  
Старый 15.04.2009, 19:35   #7
seoseo
Senior Member
 
Регистрация: 12.11.2007
Сообщений: 654
Бабло: $18120
ТС -->
Отправить сообщение для seoseo с помощью ICQ
автор темы ТС По умолчанию

AlexWM спасибо за помощь, правда решение уже было найдено
seoseo вне форума  
Старый 15.04.2009, 19:54   #8
AlexWM
Ебланнед
 
Регистрация: 25.04.2008
Сообщений: 101
Бабло: $10120
По умолчанию

Цитата:
Сообщение от seoseo Посмотреть сообщение
AlexWM спасибо за помощь, правда решение уже было найдено
Да ничего страшного, одного решения не может быть
AlexWM вне форума