|
|
|
| Друзья, помогите, пожалуйста!
Ниже приведен код, в который мне надо кое-что добавить, но как я не знаю...
В общем, там есть строчка
$str = '<td>-a-</td>'."\r\n";
|
В ней -a- заменяется на имя файла ($name_file).
Потом эта срочка заменяет тег <tr> на <tr>.$str в файле, который также генерируется нижеприведенным кодом.
Мне очень надо еще вставлять после тега </td>, теги <tr></tr> через определенное количество раз.
Например, через 4 таких строчки <td>-a-</td>'."\r\n", надо вставить одну такую:
<td>-a-</td><tr></tr>'."\r\n".
<?php
$dirname = '../';
scan_dir($dirname);
function scan_dir($dirname)
{
$dir = opendir($dirname);// Открываем текущую директорию
while (($file = readdir($dir)) !== false)
{
if($file == '.' && $file != '..')
{
if(is_dir($dirname."/".$file))
{
$name_dir = basename ($dirname);//получение имени директории
$name_str = '../'.$name_dir.'.htm';//будующее имя html страницы
if (!is_file ($name_str))//если такого файла нет
{
$shablon_put = './shablon_str.txt';//в шаблоне есть всего 2 тега (на разных строках): <tr></tr>
$shablon = file_get_contents($shablon_put);
$fp = fopen ($name_str, 'w+');//создание новых страниц
fwrite ($fp, $shablon);//запись шаблона
fclose ($fp);
}
}
}
if($file != '.' && $file != '..')
{
if(is_file($dirname."/".$file))//если это файл
{
$name_file = basename ($dirname."/".$file);//получение имени файла
$str = '<td>-a-</td>'."\r\n";
$str = str_replace ('-a-', $name_file, $str);
$file = file_get_contents ($name_str);
$file = str_replace ('<tr>', '<tr>'."\r\n".$str, $file);//происходит замена
$fp = fopen ($name_str, 'w+');
fwrite ($fp, $file);
fclose ($fp);
}
}
if($file != '.' && $file != '..')
{ if(is_dir($dirname."/".$file))
{
scan_dir($dirname."/".$file);
}
}
}
closedir($dir);// Закрываем директорию
}
?>
|
| |
|
|
|
|
|
|
|
для: idimka
(18.06.2007 в 21:33)
| | >Мне очень надо еще вставлять после тега </td>, теги <tr></tr>
Подумайте. Вам этого не надо. | |
|
|
|
|
|
|
|
для: Trianon
(18.06.2007 в 23:00)
| | вы пошутили или нет?
а как тогда без этого?
мне кажется это самый правильный путь.
Не все-таки это даже единственный путь.
Правда, надо поменять местами эти теги на </tr><tr>, но это сути не меняет. | |
|
|
|
|
|
|
|
для: idimka
(18.06.2007 в 23:57)
| | Я не очень всматривался в код, но принцип такой: добавляете одну переменную в цикл и каждый раз увеличиваете ее на +1 (если while(), если же for(), то можно и без допю переменной обойтись), а затем (в начале цикла, перед увелечением) ставите строчку
if ($переменная % 4 == 0) print "<tr>";
|
Если я правильно вас понял, то это работает :) | |
|
|
|
|
|
|
|
для: idimka
(18.06.2007 в 23:57)
| | Правда, надо поменять местами эти теги на </tr><tr>, но это сути не меняет.
Сути не меняет? Ничего себе. | |
|
|
|
|
|
|
|
для: Unkind
(19.06.2007 в 15:41)
| | Ваш вариант я не очень понял: что за % (в php я новичок и может задаю глупый вопрос)? И у меня уже есть цикл, если еще один влеплять, то вопрос, с каким условием?
Также у меня был один вариант, вот он:
<?php
$dirname = '..';
scan_dir($dirname);
function scan_dir($dirname)
{
$colNumber = 1;
$col = 4;
$dir = opendir($dirname);// Открываем текущую директорию
while (($file = readdir($dir)) !== false)
{
if($file == '.' && $file != '..')
{
if(is_dir($dirname."/".$file))
{
$name_dir = basename ($dirname);//получение имени директории
$name_str = '../'.$name_dir.'.htm';//будующее имя html страницы
if (!is_file ($name_str))//если такого файла нет
{
$shablon_put = './shablon_str.txt';
$shablon = file_get_contents($shablon_put);
$fp = fopen ($name_str, 'w+');//создание новых страниц
fwrite ($fp, $shablon);//запись шаблона
fclose ($fp);
}
}
}
if($file != '.' && $file != '..')
{
if(is_file($dirname."/".$file))//если это файл
{
if($colNumber>0)
{
$name_file = basename ($dirname."/".$file);//получение имени файла
$str = '<td>-a-</td>'."\r\n";
$str = str_replace ('-a-', $name_file, $str);
$file = file_get_contents ($name_str);
$file = str_replace ('<tr>', '<tr>'."\r\n".$str, $file);//происходит замена
$fp = fopen ($name_str, 'w+');
fwrite ($fp, $file);
fclose ($fp);
}
$colNumber++;
if($colNumber==$col)
{
$colNumber=0;//строчка вставляется только когда $colNumber=0!
$str = '<td>-a-</td></tr><tr>'."\r\n";
$str = str_replace ('-a-', $name_file, $str);
$file = file_get_contents ($name_str);
$file = str_replace ('<tr>', '<tr>'."\r\n".$str, $file);//происходит замена
$fp = fopen ($name_str, 'w+');
fwrite ($fp, $file);
fclose ($fp);
}
}
}
if($file != '.' && $file != '..')
{ if(is_dir($dirname."/".$file))
{
scan_dir($dirname."/".$file);
}
}
}
closedir($dir);// Закрываем директорию
}
?>
|
НО! Большая проблема в дописывании этих тегов (</tr><tr>, и все-таки нет разницы как они стоят, так или так: <tr></tr>).
У меня в файлы записывается все фиг знает как и фиг знает сколько. | |
|
|
|
|
|
|
|
для: idimka
(19.06.2007 в 20:30)
| | выражение с процентом считает остаток от деления | |
|
|
|
|
|
|
|
для: bronenos
(19.06.2007 в 20:54)
| | Сегодня наконец-то понял суть этих процентов.
Добавил это в код, но работает не так как надо... :(
</tr><tr> вставляются не через 4 строчки, а через 3 или 9, плюс имена файлов повторяются по несколько раз.
Помогите, пожалуйста разобраться!
Вот немного измененный код (с учетом поста golovdinova, спасибо Вам большое за хорошую идею).
<?php
$dirname = '..';
scan_dir($dirname);
function scan_dir($dirname)
{
$i=0;
$dir = opendir($dirname);// Открываем текущую директорию
while (($file = readdir($dir)) !== false)
{
if($file == '.' && $file != '..')
{
if(is_dir($dirname."/".$file))
{
$name_dir = basename ($dirname);//получение имени директории
$name_str = '../'.$name_dir.'.php';//будующее имя html страницы
if (!is_file ($name_str))//если такого файла нет
{
$shablon_put = './shablon_str.txt';
$shablon = file_get_contents($shablon_put);
$fp = fopen ($name_str, 'w+');//создание новых страниц
fwrite ($fp, $shablon);//запись шаблона
fclose ($fp);
}
}
}
if($file != '.' && $file != '..')
{
if(is_file($dirname."/".$file))//если это файл
{
$i++;
if($i%4!==0) $str = "<td>-a-</td>";
else $str = "<td>-a-</td></tr><tr>";
$name_file = basename ($dirname."/".$file);//получение имени файла
$str = str_replace ('-a-', $name_file, $str);
$file = file_get_contents ($name_str);
$file = str_replace ('<tr>', '<tr>'."\r\n".$str, $file);//происходит замена
$fp = fopen ($name_str, 'w+');
fwrite ($fp, $file);
fclose ($fp);
}
}
if($file != '.' && $file != '..')
{ if(is_dir($dirname."/".$file))
{
scan_dir($dirname."/".$file);
}
}
}
closedir($dir);// Закрываем директорию
}
?>
|
| |
|
|
|