В чем косяк? Или что делать?

Nadi
На сайте с 03.03.2008
Offline
22
411

Имеем рабочий скрипт:

<?php

error_reporting(E_ALL);

ini_set('display_errors', 'On');

ini_set('session.auto_start', '1');

//ini_set('upload_tmp_dir', 'c:\tmp');

set_time_limit(120);

@session_start();

$dataCata = 'anatomy'; // имя создаваемого каталога

$txtFile = 'result.txt'; // файл с текстом

$ancorFile = 'ancor.txt'; // файл с заголовками

$tplFile = 'template.txt'; // файл шаблона .dat файлов

$mainTplFile= 'maintemplate.txt'; // Шаблон файла со ссылками

$datDir = "articles/$dataCata "; // директория для .dat файлов

$datExt = 'dat'; // расширение .dat файлов

$mainFile = 'main.dat'; // Файл со ссылками на .dat файлы

$srcCharset = 'cp1251'; // Кодировка исходных файлов

$destCharset = 'cp1251'; // Кодировка файлов на выходе

$scriptCharset = 'utf-8'; // Кодировка скрипта

$blockLength = 4000; // Максимальный размер блока в байтах из файла с текстом

$file = fopen ("engine/menu.php","a");

$str = "<li><a href=\"/$dataCata/\">$dataCata</a></li>";

if ( !$file )

{

echo("Ошибка открытия файла");

}

else

{

fputs ( $file, $str);

}

fclose ($file);

header("Content-Type: text/html; charset=$scriptCharset");

if ($srcCharset == 'utf-8') $blockLength *= 2;

$blockLength = $blockLength % 2 > 0 ? $blockLength+1 : $blockLength;

if ( !is_dir($datDir) ) mkdir($datDir, 0777, true);

$hMain = NULL;

if ( !(@$hMain = fopen($mainFile, 'w+')) ) die("Невозможно создать файл $mainFile<br/>\b");

$hText = fopen($txtFile, 'r');

$ancors = explode("\n", $srcCharset == $scriptCharset ? file_get_contents($ancorFile) : iconv($srcCharset, $scriptCharset, file_get_contents($ancorFile)));

$template = $srcCharset == $scriptCharset ? file_get_contents($tplFile, 'r') : iconv( $srcCharset, $scriptCharset, file_get_contents($tplFile, 'r') ); // читаем шаблон

$content = '';

while ($content = fread($hText, $blockLength)) {

$fname = genName();

if (@$hDat = fopen("$datDir/$fname.$datExt", 'w')) {

$ancor = trim($ancors[rand(0, count($ancors)-1)]);

$content = $srcCharset == $scriptCharset ? trim($content) : iconv($srcCharset, $scriptCharset, trim($content));

// Генерим dat файлы по шаблону

$thisTpl = preg_replace("/(<!--.*?Kan_title.*?-->).*?(<!--.*?Kan_title.*?-->)/uism", "$1\n$ancor\n$2", $template);

$thisTpl = preg_replace("/(<!--.*?Kan_content.*?-->).*?(<!--.*?Kan_content.*?-->)/uism", "$1\n$content\n$2", $thisTpl);

$thisTpl = $scriptCharset == $destCharset ? $thisTpl : iconv( $scriptCharset, $destCharset, $thisTpl );

if (fwrite($hDat, $thisTpl)) {

echo "Файл $dataCata/$fname.$datExt записан<br/>\n";

$html = "<url>

<loc><a href=\"/$dataCata/$fname.html\">$ancor</a></loc>

</url>\n";

fwrite($hMain, iconv($scriptCharset, $destCharset, $html));

} else { echo "Ошибка записи в файл $dataCata/$fname.$datExt<br/>\n"; }

} else {

echo "Не могу записать в файл $dataCata/$fname.$datExt<br/>\n";

}

}

// Генерация уникального имени

function genName() {

return substr(md5(uniqid(rand(), true)), 0, rand(7, 13));

}

Так вот значение переменной $dataCata - 'anatomy' нужно постоянно менять, то есть скрипт отработал, заменил anatomy на biology и снова отработал, и т.д., значение переменной нужно брать из документа .txt

Попробовал считать .txt в массив построчно заменяя $dataCata, но цикл че то не рааботет, то есть работает но не завершается.

HELP!!!

Улыбнись миру и он улыбнется тебе!!! free-lance.ru/users/Nadi8
Ragnarok
На сайте с 25.06.2010
Offline
239
#1

что если завернуть всё в ещё 1 цикл, каждый раз при отработке которого будет обновляться $dataCata?

например, если $dataCata в массиве можно сделать

for($i=0;$i<count($dataCataArray);$i++){

$dataCata=$dataCataArray[$i];

}

//TODO: перестать откладывать на потом

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий