Помогите: скрипт - динамическое создание файлов из массива

Обсуждение серверного программирования.

Модераторы: Duncon, Yurich

Ответить
Cron
Сообщения: 7
Зарегистрирован: 28 май 2004, 14:56

29 май 2004, 06:45

// Кусок кода, который должен создавать кучу файлов с именами из массива.
// Массив создается динамически из файла struct.txt

/* кусок файла struct.txt*/
I. Плечевая группа
I.1. Начальная обработка
I.1.A. изделий из тканей
I.1.A.K. пальтово-костюмного ассортимента

/* скрипт обработчик */

$structfile = './udbdata/struct/struct.txt';
$i=0;
$shw="non";

$file = fopen ("$structfile", "r");
while ($line=fgets($file))
{
$i++;
}
fclose ($file);

$newstruct_file = file("$structfile");

for ($maxi=0; $maxi!=$i; $maxi++)
{
$shw = $newstruct_file[$maxi];

// ... Удалены строки преобразование информации из struct.txt ...
// ... после преобразования информация принимает вид: ...
// 01 Плечевая группа
// 0101 Начальная обработка
// 010101 изделий из тканей
// 01010112 пальтово-костюмного ассортимента
// имена файлов соответствено формируются в виде " чсло.txt " например 010101.txt а содержимое получается " текстовая часть "

$struct_num[$maxi] = $shwmn;
$struct_text[$maxi] = $shwmt;

}

$n=0;

echo "<table class=table3>";
echo "<tr><td width=15% class=table3>struct_num[n]</td><td width=35% class=table3>struct_text[n]</td><td width=20% class=table3>предполагаемый файл:</td><td width=30% class=table3>содержимое:</td></tr>";

$a=0;
$c=0;

while ( $n < $i )
{

$lens = strlen($struct_num[$n]);

if ( $lens < 4)
{
$struct_file[$n] = "00.txt";
$struct_file_content[$n] = "$struct_text[$n]\r\n";

}
elseif ($lens > 4 && $lens < 30)
{
$struct_file[$n] = preg_replace("/..$/i", ".txt", $struct_num[$n]);
$struct_file_content[$n] = "$struct_text[$n]\r\n";
}
else
{
$struct_file="X3";
$struct_file_content = "EMPTY";
}
echo "<tr><td width=15% class=table3>$struct_num[$n]</td><td width=35% class=table3>$struct_text[$n]</td><td width=20% class=table3> $struct_file[$n] </td><td width=30% class=table3> $struct_file_content[$n] </td></tr>";
$n++;

}
echo "</table>";

// Все написанное выше прекрасно работает
// Теость рисуется таблица, с именами файлов и содержимым
// Но когда пытаюсь создать эти файлы (Даже можно и просто
// пустые без содержимого, то создаются почемуто только перваый (ну т.к. я его явно указал имя, и последний - его скрипт правильно создает )

$fn = 0;
while ( $fn != 30 )
{
$st = "$struct_file[$fn]";
echo "<hr>$st<hr>";
$file = fopen ("./udbdata/newstruct/$st", "a+");
fputs($file, $struct_file_content[$fn]);
fclose ($file);
$fn++;
}

Если создавать файлы с нумарами счетчика, то они создаются без проблем, а вот с именами из массива не получается.
Мож кто может помоь с такой проблемой, в чем тут уменя несрост ? :roll:
Cron
Сообщения: 7
Зарегистрирован: 28 май 2004, 14:56

30 май 2004, 17:05

Такс, я собственно сам нашел баг скрипта, но немогу его исправить.
А именно Баг находится в строках:
$fn = 0;
while ( $fn != 30 )
{
$st = "$struct_file[$fn]";
echo "<hr>$st<hr>";
$file = fopen ("./udbdata/newstruct/$st", "a+");
fputs($file, $struct_file_content[$fn]);
fclose ($file);
$fn++;
}

А иенно переменная $st почему-то содержит в себе пробел, но на самом деле енто не пробел а пропуск, и как я его не пытался убрать ничего не получилось. Мож ктонить может мне всетаки помочь, уже казалось бы с легкой задаче !?! А?
Cron
Сообщения: 7
Зарегистрирован: 28 май 2004, 14:56

01 июн 2004, 05:22

Ну вот :) Все само и решилось ! Тоесть я решил эту проблему ! :)
А проблема была в том, что откудато, в строке с именем файла (предполагаемого) появился NULL и система не могла его отобразить корректно.
А удалил я его с помощью его ASCII кода. собственно с егоже помощью я его и нашел :) Вот так-то друзья - товарищи.
Ответить