Home PHP А.Волос "PHP Практика " Глава 1 Несколько скриптов Конвертируем txt в html (Project 12)
Конвертируем txt в html (Project 12) PDF Печать E-mail
Автор: А.Волос   
Программа делает из обычной страницы -
html-страницу.
Ставит теги <p> <br>
<DIV CLASS="block_2">
</DIV CLASS="block_2">
Благодаря тегам текст на странице приобретает структурированный вид.
Так же этот скрипт обезвреживает теги на исходной странице.


<?php
$flag1 = 0;
$flag2 = 0;
$tab_num_str = 0; //количество табуляторов
$gap_num_str = 0; //количество пробелов

$leks01 = "<DIV CLASS=\"block_2\">\r\n";
$leks02 = "\r\n</DIV CLASS=\"block_2\">";

//-----------------------------
// откроем файл для вывода ощибок
$filename = "error.txt";
if(!($errorFile = fopen($filename, "w"))){

print("'$filename' could not be created\n");
exit;
}
//-----------------------------
// откроем файл для вывода
$filename = "fileOut.txt";
if(!($fileOut = fopen($filename, "w"))){
fputs($errorFile, "'$filename' could not be created\n" );
exit;
}
//-----------------------------
// откроем файл для чтения
$filename = "data.txt";
if(!($myFile = fopen($filename, "r"))){
fputs($errorFile, "'$filename' could not be opened\n" );
exit;
}
//-----------------------------
fputs($fileOut, "\r\n<hr><code>");

//считаем построчно из файла data.txt в файл fileOut.txt
while(!feof($myFile)){
//читаем строку из файла
$myLine = fgets($myFile, 255);
//если строка пустая ставим тег <p>
if(strlen($myLine) < 3){
fputs($fileOut, "<p>$myLine");
$flag1 = 1;
continue;
}

//определим сколько всего табуляторов в строке.
$tab_num_temp = substr_count($myLine,"\t");
//fputs($fileOut, "\r\n*****$tab_num_temp");

//если табуляторы в строке ЕСТЬ---------------------------------
if($tab_num_temp > 0){

$arrayTemp = array();//объявим массив
$arrayTemp = explode("\t", $myLine);//превратим строку в массив


//найдем длину массива и в цикле считаем элементы,
//пока не появится не пустой элемент.
//так мы сосчитаем количество табуляторов в начале строки!
// определим длину массива
$dlMass = count($arrayTemp);

$k = 0;
for($i = 0;$i < $dlMass; $i++){
$char_temp = $arrayTemp[$i];
if($char_temp == ""){
$k++;
}
else{
//fputs($fileOut, "-$k-");
//$k = 0;
break;
}
}

//сейчас в $k - количество табуляторов в начале строки!
$tab_num_temp = $k;

if($tab_num_temp == $tab_num_str){

if($flag1 == 0){
//fputs($fileOut, "\r\n<br>");
fputs($fileOut, "<br>");
}
$flag1 = 0;
}

$temp = $tab_num_temp - $tab_num_str;
if($temp < 0) $temp = -$temp;

if($tab_num_temp > $tab_num_str){

for($i = 0; $i < $temp; $i++)
fputs($fileOut, $leks01);//на 2 символа вправо
}
else{
if($tab_num_temp != $tab_num_str){
for($i = 0; $i < $temp; $i++)
fputs($fileOut, $leks02);//на 2 символа влево
}
}
$tab_num_str = $tab_num_temp;
}
else{//табуляторов в строке НЕТ------------------------------
$mas_String = array();

$n = 0;
//превратим строку в массив
$mas_String = str_split($myLine);

// определим длину массива
$indexLimit = count($mas_String);

//определим число пробелов в начале строки
for($i = 0;$i < $indexLimit; $i++){

$char_temp = $mas_String[$i];
if($char_temp == " "){
$n++;
}
else{
//fputs($fileOut, "-$n-");
//$n = 0;
break;
}
}

//сейчас в $n количество пробелов в начале строки.
$gap_num_temp = $n;
$n = 0;

if($gap_num_temp < 2) $gap_num_temp = 0;

//если колич пробелов в текущей и предыдущей строке одинаково, то <br>
if($gap_num_temp == $gap_num_str){
if($flag1 == 0){
//fputs($fileOut, "\r\n<br>");
fputs($fileOut, "<br>");
}
$flag1 = 0;
}

$temp = $gap_num_temp - $gap_num_str;
if($temp < 0) $temp = -$temp;
$temp = (int)($temp / 2);

if($temp < 1 && $temp > 0) {

$temp = 0;
}

if($gap_num_temp > $gap_num_str){

for($i = 0; $i < $temp; $i++)
fputs($fileOut, $leks01);//на 2 символа вправо
}
else{
if($gap_num_temp != $gap_num_str){
for($i = 0; $i < $temp; $i++)
fputs($fileOut, $leks02);//на 2 символа влево
}
}

$gap_num_str = $gap_num_temp;

}

$myNewLine = htmlspecialchars($myLine);//обезвредим теги
fputs($fileOut, "$myNewLine");

}//end while

fputs($fileOut, "\r\n</code><hr>");

// закроем файлы
fclose($myFile);
fclose($fileOut);
fclose($Errorfile);

?>


Вверх

Обновлено 05.05.2011 07:41