將TheGuide的資料,轉換為網頁檢視的格式!
說明:從 TheGuide 匯出的 *.rtf 檔案,用wordpad開啟,全選,複製,貼到notepad++裡,另存新檔,編碼為 UTF-8(無BOM),檔案名稱為 data.txt。之後再用本網頁 index.php 進行轉換。將產生出來的 data 資料夾替換掉範本的資料夾即可!
參考範本template.zip
程式回報結果:
function getStrExtractCode($strLine)
{
// 若是資料長得像 "1.1 第一款",則應該傳回 "1.1",否則傳回 ""
$booIsCode=false;
$straTmp = explode(" ", $strLine);
if(count($straTmp)>1 && trim($straTmp[0])!="")
{
$straNumbers=explode(".", trim($straTmp[0]));
if(count($straNumbers)>1)
{
$booIsCode=true;
for($iN=0; $iN1) $str1 .= " ";
$str1 .= $straTmp[$i];
}
return $str1;
}
function booHasContent($strContent)
{
$strChk=str_replace('
', "", $strContent);
$strChk=str_replace("\r\n", "", $strChk);
if($strChk!="") return true;
else return false;
}
function filePutContents($strCode, $strCaption, $strContent)
{
global $strBuffer;
if(booHasContent($strContent)==true)
{
// 有內容
$strEmpty="false";
$strCnt = '' . "\r\n" . $strContent . "\r\n" . '';
file_put_contents('./data/' . $strCode . '.htm', $strCnt);
}
else
{
// 無內容
$strEmpty="true";
}
$strBuffer .= " ct(\"" . $strCode . "\", \"" . $strCaption . "\", " . $strEmpty . ");" . "\r\n";
}
function destroy_dir($dir)
{
if (!is_dir($dir) || is_link($dir)) return unlink($dir);
foreach (scandir($dir) as $file) {
if ($file == '.' || $file == '..') continue;
if (!destroy_dir($dir . DIRECTORY_SEPARATOR . $file)) {
chmod($dir . DIRECTORY_SEPARATOR . $file, 0777);
if (!destroy_dir($dir . DIRECTORY_SEPARATOR . $file)) return false;
};
}
return rmdir($dir);
}
function getIIdxForRootNode_maybe($straLine, $iLines)
{
for($i=0; $i<$iLines; $i++)
{
if(trim($straLine[$i])!="")
{
return $i;
}
}
return -1;
}
$strFileContents = file_get_contents('data.txt');
$straLine = explode("\r\n", $strFileContents);
$iLines = count($straLine);
// 刪除目錄
$rtn=destroy_dir('./data');
if($rtn==true) echo("rmdir ok
");
else echo("rmdir error
");
// 建立目錄
$rtn=mkdir('./data');
if($rtn==true) echo("mkdir ok
");
else echo("mkdir error
");
$strBuffer="";
$iRootIdx=getIIdxForRootNode_maybe($straLine, $iLines);
$strCode="1";
$strCaption=$straLine[$iRootIdx];
$strContent="";
for($i=($iRootIdx+1);$i<$iLines;$i++)
{
$strTmpCode=getStrExtractCode($straLine[$i]);
if($strTmpCode=="")
{
$strContent .= str_replace('<','<',$straLine[$i]) . '
' . "\r\n";
}
else
{
filePutContents($strCode, $strCaption, $strContent);
$strCode=$strTmpCode;
$strCaption=getStrCaption_maybe($straLine[$i]);
$strContent="";
}
}
if($strCode!="")
{
filePutContents($strCode, $strCaption, $strContent);
}
if($strBuffer!="")
{
$strBuf = ' function initialization()' . "\r\n"
. ' {' . "\r\n"
. $strBuffer . "\r\n"
. ' refreshTree();' . "\r\n"
. ' }' . "\r\n";
file_put_contents('./data/left.js', $strBuf);
}
echo 'Finished ' . $iLines . ' lines!
';
?>