<?php

ini_set("display_errors",1);

if(check_php()){
    $benchmark              = false;
    $source = false;
    $cache = true;
    include("scripts/trans.php");
    $ini_array = parse_ini_file("scripts/html.ini",true);
    ////////////////////////////////////////////////////////本文
    $document = document();
    $obj                = new trans($document);
    $content_name       = "main";


    $documents          = $obj->text2html();
    $source             = $obj->source;
    ////////////////////////////////////////////////////////ナビゲーション
    $navi = "";
    check_php();//phpのバージョンチェック
    html_document1($ini_array,$documents);
}

function document(){
$document=<<<DOC

<div>

text2htmlをダウンロードいただきありがとうございます。¶

プラグインとしても、単体でも使える「記法アプリです。」¶

私は、何種類かのブログで読み書きしたりすることがあります。また、ブログアプリの変更も行います。
同じような書き味で共通して書ける。「補助的なツールが必要になり、制作しました。」¶

編集する人が、必要とする機能だけを使えるようにしたり、カスタマイズが出来ます。¶

開発作業は、自家製のCMSを制作し、実際のWEBサイトを運営しながら、記法を制作し、開発しました。そのサイトは、現在でも稼動しております。¶

ドキュメント編集上のニーズは、そのサイトごとに変化すると思います。

変換の為のソースは、テキストファイル、xmlファイル、外部応答の3種が使えるようにしています。
いままでの、記法プラグインになかったアイディアも盛り込んでいますから、実際に使ってみてください。¶

もちろん、記法とhtmlタグとを組み合わせて使用することも出来ます。phpとして解釈する記法も利用できます。¶

編集補助の為のアプリのため、常時フィルタプラグインとして利用すると、サーバに負荷がかかりますので、フィルタプラグインとして利用する場合は、キャッシュ等と組み合わせていただくと良いと思います。また、Frog CMS等のように、フィルタ変換後の結果をDBに保持するタイプのものを使っていただくのも良いかもしれません。¶

現在のところ、XOOPS (smarty pluginとして）MTOS(php pluginとして)　WordPress(plugin) Frog(plugin) および単体。で動作することを確認しています。　¶
DEMOは、http://www.tenman.info/(tenman.info)に用意してありますので、興味のある方は、ご確認いただけますようお願いします。

==webmaster@tenman.info



【2008-7-25】
test
【/2008-7-25】
【非表示】
<div style="width:640px;">
[カレンダーテンプレート]
</div>

<br style="clear:both;" />
qrcode>(test)
【/非表示】

[head_line]

*準備

**変換機能を使うために必要なもの

[strong| |PHP5,マルチバイト文字列関数]

文字列を画像に変換する機能等が使えません。マルチバイト文字列関数は、必須です。

[strong| |GD2,PEAR Cache_Lite,PEAR Benchmark,]

なくても使うことが出来ますが、何らかの方法で、キャッシュ等の工夫をしてください。

ベンチマークは、簡単に表示したり、非表示に出来るようにしてあります。

この変換プログラムは、ノロマですから、どの変換に時間がかかるか、検討できるようにしてあります。

allow_url_fopen　が使えない場合には、名前付リンク、外部APIを利用した変換などは使えません。


**使い方
このプログラムは、単体でも、ブログのプラグインとしても、利用できます。

単体で利用する場合の一例です。
code:<?php
code:ini_set("display_errors",1);
code:include("scripts/trans.php");
code:\$ini_array = parse_ini_file("script/html.ini",true);《埋め込みスタイルや外部スタイルの指定》
code:\$benchmark          = true;《ベンチマークの表示非表示》
code:\$source             = true;《生成したソースの表示非表示》
code:\$obj                = new trans(\$document);
code:\$content_name       = "main";《htmlブロック管理用グローバル変数》
code:\$documents          = \$obj->text2html();
code:\$source             = \$obj->source;
code:html_document1(\$ini_array,\$documents);


-trans.php
--このファイルが、変換を行います。これ以外の同梱ファイルは、必要なければ削除していただいてかまいません。
-html.ini
--このファイルは、php.ini形式の　主にhtml共通で利用する情報を記述しておきます。例：外部スタイルのURL
-変数　\$benchmark
--text2htmlは、行頭などにつけた記号により、該当部分をhtmlに変換します。指定後との変換にどれ位の時間を要しているかを調べることが出来ます。サイトやブログなどを実際に公開する場合には、false　を指定していただくと表示しません。

-変数　\$source
--記号により変換したhtmlのソースを表示します。正確に変換できているか調べるときに　使えます。通常は、false　を指定します。

-変数　\$content_name
--単体で利用する場合、複数のインスタンスを必要とするときがあります。text2thmlは、idなどを自動付与しますから、それぞれのインスタンスごとに、idも変更する必要があります。この変数は、それらの名称の一部として使われます。



***ディレクトリとファイルのパーミッション

images cache のディレクトリは、757にしてください。

images　ディレクトリ内にある画像ファイルは、646にしてください。


***wordpress frog 等のプラグインとして使う場合。

filter_text2html.php(frogの場合)やwordpress.phpを開いて、プラグインのルートパス。URLを直接記述してください。
ディレクトリの位置がずれてしまいます。
必要に応じて、imagesやcss import 等のディレクトリを、ご自身で指定してください。

sample:

<del style="color:red">//\$url = "http://". \$_SERVER['HTTP_HOST'] . dirname(\$_SERVER['PHP_SELF']).'/';</del><br />

\$url = "http://127.0.0.1/frog/frog/plugins/text2html/";<br />


<del style="color:red">//\$text2html_dir_path = dirname(dirname(__FILE__)).'/';</del><br />
\$text2html_dir_path = "c:\\Apache\\htdocs\\frog\\frog\\plugins\\text2html\\";

**基本的な変換例



例えば現在時刻を

[日付]

code:［日付］
code: ［］は便宜上全角を利用。本来は半角です。


また、必要により、phpの関数を実行させることも出来ます。

3X4/2=eval>[3*4/2]

code:3X4/2=eval>[3*4/2]

eval>[M_PI]
code:eval>[M_PI]


という記述も可能です。

htmlタグは自由に記述することも出来ます。
但し、タグ内での改行は出来ません。


記法は、使う人が、わかりやすくカスタマイズできないと、覚える手間がかかるのが難点です。
記法だけではなく、htmlも使えるので、どちらともなく始まり、使うほどに、効率よい編集が出来るツールを目指しています。¶







例えば、
<!---->
-画像記法を使用して、幅、高さを指定、alt属性も　記法で書くことが出来ます。

-画像は、gif png jpg　だけでなく、midや、swfファイルも自動リンクします。


-リストの階層制限はありません。

-YouTubeリンクの作成など、プラグイン関数を利用することが出来ます。

-htmlドキュメントの基本になる段落タグの扱いが、一般的な記法入力プログラムと異なります。《通常改行が2回入ると、段落タグで囲う形になっているケースが多いですが、そのために、編集時の行間が制限されましたが、htmlタグの記述や、記法マーカーの記述で段落を形成する扱いにしています。》
-拡張機能として、文字列から、画像を生成することが出来ます。


**サンプル

以下にサンプルを示します。

***画像

http://www.tenman.info/images/pen.jpg?w=120h=120alt=サンプル

code:http://www.tenman.info/images/pen.jpg?w=120h=120alt=サンプル

***ショートクエリ
ショートクエリは、自身で、設定するものと、組み込み済みのものがあります。
組み込み済みの機能を説明します。


***ライブイメージフォント
この機能は、入力した文字列に対応する画像をWEB上で生成して、imageディレクトリに保存します。
この文字列画像を、指定したタグの背景として、htmlを作成します。
文字列は、指定したタグの子エレメント&lt;span&gt;内に記述します。spanは、スタイルの指定で
display:none;としていますから、スタイル適用時は、画像として、スタイルを適用しない場合はテキストとして、表示します。
※ttf形式のフォントを別途用意する必要があります。

txt2img>(p:mikaP15:いろいろな文字を画像として、表現することが可能になります。)
txt2img>(p:mikaP15:フォントファイルを用意して、字体も選べます)
txt2img>(p:mikaP15:ABCDEFG)
txt2img>(p:mikaP15:ABCDEF)
txt2img>(p:mikaP15:ABCDEFGH)
txt2img>(p:mikaP9:しかし、画像は、背景としてセットされるので、htmlは、画像の読めないブラウザにも対応しています。)
txt2img>(p:mikaP9:自分らしい字体を使って、書きたいと思うことありませんか？)
code:txt2img>(p:mikaP_15:いろいろな文字を画像として、表現することが可能になります。)
code:txt2img>(p:mikaP_15:フォントファイルを用意して、字体も選べます)
code:txt2img>(p:mikaP15:ABCDEFG)
code:txt2img>(p:mikaP15:ABCDEF)
code:txt2img>(p:mikaP15:ABCDEFGH)
code:txt2img>(p:mikaP9:しかし、画像は、背景としてセットされるので、htmlは、画像の読めないブラウザにも対応しています。)
code:txt2img>(p:mikaP9:自分らしい字体を使って、書きたいと思うことありませんか)

***画像リンクとサムネイルの自動作成

画像を参照する機会は、比較的多いと思います。WEB上の画像（コピーできれば）をコピーして、imageディレクトリにサムネイルを保存します。その上で、コピー元にリンクします。
コピー元を記述したコメントタグを追加して、サムネイルを表示します。


copy>(http://www.tenman.info/images/pen.jpg)
***trackback

これは、サービスなどを表示する設定のサンプル事例になると思いますが、トラックバックを自由配置するための記法です。

トラックバックは、そのアイディアの良さを認めながら、汚染の問題から利用されないケースが多くあります。スローアウェイトラックバックなんちゃって。

trackback>(なんでも質問箱)


***h2-h6見出し記法
見出しを記述します。アスタリスクのいやな人は、クラス内を変更して、別のものに差し替えることも出来ます。

***h2からh6まで記述できます。
****h5
*****h6
****h5

code:***h4
code:****h5
code:*****h6
code:****h5

***リスト記法
リストは、-と+を行頭に記述することで、記述できます。
-リスト
--リスト
--リスト
---リスト
---リスト
--リスト
-リスト
+リスト
++リスト
++リスト
+++リスト
+++リスト
++リスト
+リスト

***引用記法
引用は、>または、>の繰り返しで、入れ子で記述できます。

>http://www.sample.com/
>>これは引用です
>http://www.another.com/
>>これは引用です
>>>これは引用です
>>>これは引用です
>>>これは引用です

>引用

***リンク記法

ハイパーリンクを簡単に作る記法です。
-指定したURLのタイトルを取得して、リンクを作成。
--http://www.yahoo.co.jp/(title)

code:http//www.tenman.info/(title)
-指定したURLを指定したテキストでリンク
--http://www.tenman.info/(好きな名前でリンクする)
code:http://www.tenman.info/(好きな名前でリンクする)


-指定したURLを新しいページで開く。
--http://www.tenman.info/(b:title)
code:http//www.tenman.info/(b:title)

-指定したURLを画像クリックで（新しいページとして）開く。
--http://www.tenman.info/(b:http://www.tenman.info/images/button.png?w=40h=40)
code:http//www.tenman.info/(b:http://www.…/images/button.png?w=40h=40)



***ソースコード記法
先頭にcode:をつけると、エスケープして表示します。&lt;pre&gt;&lt;code&gt;…&lt;/code&gt;&lt;/pre&gt;


code:   <meta http-equiv='content-type' content='text/html\; charset=utf-8' />
code:   <meta http-equiv='content-script-type' content='text/javascript' />
code:   <meta http-equiv='content-style-type' content='text/css' />
code:   <meta name='author' content='' />
code:   <meta name='keywords' content='' />
code:   <meta name='description' content='' />
code:   <link rev='made' href='mailto:' />
code: code:     <meta http-equiv='content-type' content='text/html; charset=utf-8' />
code: code:     <meta http-equiv='content-script-type' content='text/javascript' />
code: code:     <meta http-equiv='content-style-type' content='text/css' />
code: code:     <meta name='author' content='' />
code: code:     <meta name='keywords' content='' />
code: code:     <meta name='description' content='' />
code: code:     <link rev='made' href='mailto:' />

***テーブル

行頭にtr:と書くと、テーブルタグで整形します。

tr: table td |td |td


***差し込み記法

差し込み記法は、複雑に入れ子になったhtmlソース等に、値を差し込むために使用します。

差し込み記法は、定型ドキュメントをテンプレートとして、html部分と、実ドキュメント部分を分離することが出来ますから、htmlソースに触れることがなく、高度なドキュメントが作成できます。


【2008-8-6】

本日の予定

【/2008-8-6】

<div style="width:640px;">
[カレンダーテンプレート]
</div>
code:【2008-8-6】
code:本日の予定
code:【/2008-8-6】
code:<div style="width:640px;">
code:[カレンダーテンプレート]
code:</div>

このカレンダーは、PHPスクリプトで万年カレンダーを表示する仕組みのテンプレートを使っています。
枠線の高さをそろえる機能は、jQuery（javascript)で実現しています。



***webサービス
GETリクエストを送って、レスポンスをパースして表示するサービスはたくさんあります。

あなたが信頼できると判断できれば、それらの外部サービスを使って、自分だけの記法を手機能することも出来ます。

記法を適用して、いつでも、簡単に利用することが出来ます。

注意：相手のサービスに負荷をかけないように、キャッシュ等の工夫をお願いします。

***例えば、外部サービスと連携して、こんな事も可能です。
グラフなどは、URLに、クエリ文字列を追加してやることで、画像として表示します。


円グラフ>(text1=1&value1=30&text2=2&value2=20&text0=3&value0=40)


code:円グラフ>(text1=1&value1=30&text2=2&value2=20&text0=3&value0=40)


設定は、このようにします。
code:   "グラフ"=>array(
code:       'charset'=>'UTF-8',
code:       'type'=>'query',
code:       "response"=>"<img src=\"http://choigraph.minorapi.jp/line?d:data=+++E_KEYWORD+++\" alt=\"+++KEYWORD+++\"  />\\n"),


注釈記法と、simpleapi を組み合わせることで、以下のような記述も出来ます。

仙台市について《wikipedia>(仙台)》

code:仙台市について≪wikipedia>(仙台)≫
code:二重山括弧は、便宜上全角を使いますが、入力時には、半角です。

wikipedia記法だけを使ってみる。

wikipedia>(日本)




xmlをパースする関数を作って、以下のように、郵便番号を送って、xmlを文字列に変換して表示することも出来ます。

[strong| style="color:#600"|ご自身の管理下にない外部ファイルを利用する場合には、信頼できるサービスかどうかを、十分検討してください。]
レスポンスの内容が、変化したり。クロスサイトスクリプトの標的にならないように十分な注意が必要です。

郵便番号>(9820823)
郵便番号>(0230402)

code:郵便番号>(9820823)
code:郵便番号>(0230402)

qrcode>(正常に表示されました)
goo_search>(yahoo)

code:qrcode>(正常に表示されました)
code:goo_search>(yahoo)




[foot_note]










DOC;

return $document;
}

function check_php(){
$result = "";
$keyword = '';
$version = phpversion();

    if(!preg_match("/^5/",$version)){

    $result .= "<p>PHP{$version}では、エラーが発生します。php5を使ってください。</p>";

    $keyword .= 'php='.urlencode($version);
    }
$version = gd_info();
$version = $version["GD Version"];

    if(!preg_match("/\(2/",$version)){

    $result .= "<p>GD{$version}は使えないかもしれません。GD2が使えるようにしてください。</p>";
    $keyword .= '&gd='.urlencode($version);

    }

    if(!function_exists("mb_convert_encoding")){

    $result .= "<p>マルチバイト関数が使えないようです。残念ですが、この環境では利用できません。</p>";
    $keyword .= '&amp;mb=none';
    }

    if(ini_get('allow_url_fopen') !== "1"){
    $result .= "<p>php.ini allow_url_fopenの設定がOffなので、使える機能が制限されます。</p>";
    $keyword .= '&amp;urlfopen=off';

    }
//$keyword = urlencode($keyword);
if(!empty($result)){


echo<<<DOC
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  "http://www.w3.org/TR/html4/loose.dtd"><html lang="ja" dir="ltr"><head>    <meta http-equiv="content-type" content="text/html; charset=utf-8">   <title>Alart</title></head><body style="margin:0;"><div style="background:#fcc;padding:0.2em 3em;"><h1>てきでこ<span style="font-size:14px">text2html</span></h1><p>利用上の制約や、利用環境から、利用できないなどの問題がみつかりました。</p></div><div style="background:#fff;padding:0.2em 3em;">$result<div><div style="padding:2em;background:#eef;border:1px solid #aaf;"><a href="http://text2html.sourceforge.jp/skeleton.php?{$keyword}">もう少し詳しく</a></div></div><address><a href="http://text2html.sourceforge.jp/">http://text2html.sourceforge.jp/</a></address></div></body></html>
DOC;


    return false;
}
return true;
}
?>