まずテキストのフォーマットを決めます、使った事のあるWikiをパクってアスタリスクを行頭につけると見出しタグになる、とします。1つならH1要素、2つならH2要素です。また、リンクタグもそれっぽくフォーマットを決めます。今回標的のなるテキストは以下です。
*H1要素にしたい **H2要素にしたい 文書にしたい! *H1要素にしたい **H2要素にしたい 文書2[text:"リンクになりたい",url:"http://blog.t-lab.cs.teu.ac.jp/"] 文書3にしたい! 文書4EOFで終了したい欲望の塊のようなテキストです。これをPHPのpreg_replace関数によって正規表現によるゴリ押しでHTMLに生成します。
$html = file_get_contents('./test.txt'); //欲望の塊を読み込む $html =preg_replace('/^\*{2}(.+)(\n|$)+/m',"正規表現部分がわかりにくいと思いますが、大体このような感じになりました。正規表現はまだまだ慣れていないので、全然キッチリしてないです。実行順で優先順位を付けてかなり誤魔化している部分が多いです。特にH1とH2の差はアスタリスクの個数だけなので、このままの構文ではアスタリスクが多い方を優先しないとおかしな事になってしまいます。こういった所は改善点だと思いました。パズルみたいでノータリンの自分には難しかったです。$1
\n",$html); //H2タグの生成 $html =preg_replace('/^\*(.+)(\n|$)+/m',"$1
\n",$html); //H1タグの生成 $html =preg_replace('/^((?!<).*?)(\n|$)+/m',"$1
\n",$html); //Pタグの生成 $html =preg_replace('/\[text:\"(.*)\",url:\"(.*)\"\]/m',"$1",$html); //Aタグの生成 print $html;
このPHPにテキストを投げ入れると以下のようなHTMLが出来上がりました。
幾多のタグの暴走を経て(ただの失敗)、なんとか形になりました。これに宣言等のタグをくっつければHTMLファイルの出来上がりです。本来は複数改行されたらPタグで閉じる、というようにしたかったのですが(文書3と文書4が一つのPタグ内にまとまるように)複数行にまたがる正規表現はまだ自分には難しく、上手く行きませんでした。HTMLを書く時に「一部文書で改行コード入れるのがめんどくさい」と思っていただけに、ここが上手く実現できなかったのは悔しい所でした。H1要素にしたい
H2要素にしたい
文書にしたい!
H1要素にしたい
H2要素にしたい
文書2リンクになりたい
文書3にしたい!
文書4EOFで終了したい
完全に"やってみたかっただけ"なのですが、自分でフォーマットを決めてメモを取ったり、文書を書いておくとこのような形でどこかで使えるかも・・・と思いました。今回作った物の紹介は以上になります。
Your article is really good and I was intrigued by it. It gives me a lot of useful knowledge and i thank you very much for that.
返信削除shell shockers