// Создает на странице список ссылок-имен функций
// Выделяет цветом имена функций, ставит метку
// возле каждой функции
//объявим массивы
$masNameFrom = array();
$masNameTo = array();
//объявим переменные
$flag1 = 0;
$tab_num_str = 0; //количество табуляторов
$gap_num_str = 0; //количество пробелов
$leks01 = "<DIV CLASS=\"block_2\">";
$leks02 = "</DIV CLASS=\"block_2\">";
$n=0;
$tempv = 0;
$leks1 = "function";
//$leks5 = "<p>";
$leks6 = "function <SPAN CLASS=\"gloss\">";
$leks7 = "</SPAN CLASS=\"gloss\">";
//-----------------------------
// откроем файл для записи ошибок
$filename = "error.txt";
if(!($myFile = fopen($filename, "w"))) {
print("'$filename' could not be created\n");
exit;
//-----------------------------
// open directory
$myDirectoryFrom = opendir("from1");
$n=0;
// считаем в массив имена файлов из from1
while(FALSE !== ($entryName = readdir($myDirectoryFrom))) {
$n++;
// сосчитаем количество элементов в массиве
$indexLimit = count($masNameFrom);
//////////////////////////////////////////////////////////////
////////////// Цикл for /////////////////////////////////
//////////////////////////////////////////////////////////////
// для каждого имени файла повторим цикл
for($index=2; $index < $indexLimit; $index++) {
$Temp = "from1/";
$filenameFrom = "$Temp$masNameFrom[$index]";
if(!($myFileFrom = fopen($filenameFrom, "r"))) {
exit;
//---------------------------
//откроем файл для записи
$Temp1 = "to1/";
$filenameTo = "$Temp1$masNameFrom[$index]";
if(!($myFileTo = fopen($filenameTo, "wa"))) { //запись с добавлением
exit;
//-----------------------------
// откроем файл для вывода
$filename = "fileOut.txt";
if(!($fileOut = fopen($filename, "wr+"))) //чтение и запись
{
exit;
//////////////////////////////////////////////////////////////
////////////// Цикл while //////////////////////////////////
//////////////////////////////////////////////////////////////
//---------------------------
$tempv = 0;
$tab_num_str = 0; //количество табуляторов
$gap_num_str = 0; //количество пробелов
//считаем построчно из файла from в файл to
while(!feof($myFileFrom)) {
$myLine = fgets($myFileFrom, 255);
///////////////////////////////////////////////////////////////
//////////////// Блок формирует отступы от начала строк /////
///////////////////////////////////////////////////////////////
//если строка пустая ставим тег <p> if(strlen($myLine) < 3){
continue;
//определим количество табуляторов в начале строки.
$tab_num_temp = substr_count($myLine,"\t");
if($tab_num_temp > 0){
$flag1 = 0;
$temp = $tab_num_temp - $tab_num_str;
if($temp < 0) $temp = -$temp;
if($tab_num_temp > $tab_num_str){
else{
$tab_num_str = $tab_num_temp;
else{
//превратим строку в массив
$mas_String = str_split($myLine);
// определим длину массива
$indexLimit2 = count($mas_String);
for($i = 0;$i < $indexLimit2; $i++){
if($char_temp == " "){
else{
//определим количество пробелов в начале строки.
$gap_num_temp = $n;
$n = 0;
//если колич пробелов в текущей и предыдущей строке одинаково, то <br>
if($gap_num_temp == $gap_num_str){
$flag1 = 0;
$temp = $gap_num_temp - $gap_num_str;
if($temp < 0) $temp = -$temp;
$temp = (int)$temp / 4;
if($gap_num_temp > $gap_num_str){
else{
$gap_num_str = $gap_num_temp;
/////////////////////////////////////////////////////////////////
//////////////// Выделяем цветом имя функции, ставим метку /////
/////////////////////////////////////////////////////////////////
//если в строке нет слова "function", скопировать без изменений
if(substr_count($myLine, $leks1) < 1) {
fputs($fileOut, "$myNewLine");
continue;
fputs($fileOut, "<hr><code>");
$first_slovok = strtok($myLine," ");// отделим первое слово в строке
$first_slovo2k = trim($first_slovok);// убрать крайние пробелы
// если первое слово не равно "function", скопировать без изменений
if(strcmp($first_slovo2k, $leks1) != 0) {
fputs($fileOut, "$myNewLine");
continue;
fputs($fileOut, $leks6); //function <SPAN CLASS="gloss">
// имеем искомую строку, требуется ее обработать
$slovl = strstr($myLine," "); // имя функции + (обрез слева)
$slovo1a = strtok($slovl,"("); // !!имя функции (обрез справа)
$slovo2a = strstr($myLine,"("); // параметр функции (обрез слева)
$slovo3 = strtok($slovo2a, "{"); // !!параметр функции (обрез справа)
$slovo4 = strstr($myLine,"{"); // остальная часть строки (справа от {)
$slovo1a1 = htmlspecialchars($slovo1a);//обезвредим теги
//$slovo1a //имя функции
//$leks_07 //лексема </SPAN CLASS="gloss">
//$slovo3a //параметр функции
//$slovo4a //остальная часть строки (справа от {)
$slovo3a = htmlspecialchars($slovo3);//обезвредим теги
$slovo4a = htmlspecialchars($slovo4);//обезвредим теги
$slovo5 = "$slovo1a1$leks7$slovo3a$slovo4a";
fputs($fileOut, $slovo5); //
$tempv++;
//обнулим переменные
$myLine = "";
/////////////////////////////////////////////////////////////
fputs($fileOut, "</code><hr>");
//перейти на следующую позицию в файле с шагом 32 байта
fseek($fileOut,0);
//скопируем построчно в режиме дополнения из fileOut.txt в $myFileTo
while(!feof($fileOut)){
fputs($myFileTo, $myLineQ); //
// закроем файлы
fclose($fileOut);
fclose($myFileFrom);
fclose($myFileTo);
/////////////////////////////////////////////////////////////
//--------------------------------
// close directory
closedir($myDirectoryFrom);
fclose($myFile);
//--------------------------------