Text_Highlighter 設置プロセス(2)
2008年10月2日 20:53
こんばんは。
最近、DSでアクションゲームをやりすぎて、左手親指の爪の辺りが痛い掛尾です。
さて、今回はText_Highlighter 設置プロセス第2弾という事で、MySQLから取得したデータにText_Highlighterを適用してみようと思います。
ファイルの設置方法はText_Highlighter 設置プロセス(1)を参照して下さい。
では、始めましょう。
まずは、MySQLからデータを取得するという所ですが、接続等から説明を始めると長くなるので割愛します。
テーブルのカラム構成は、id int(11)、title varchar(64)、body textとでもしておきましょうか。
今回は上記のbodyカラムの中に、以下の様にカスタムタグで囲まれたテキストが存在するものとして話を進めます。
〜 略 〜 |code:PHP| $a = 'テキスト1'; $b = 'テキスト2'; $c = $a . $b; echo $c; |/code| 〜 略 〜
このカスタムタグ|code:PHP|〜|/code|の部分だけをPHPの構文でハイライトしたいので、bodyカラムのデータ内のカスタムタグの部分だけを正規表現で抽出して、以下の様にText_Highlighterを通すようにします。
// $db_dataにはMySQLのデータがハッシュで格納されている $data = $db_data['body']; // Text_Highlighterをインクルード require_once( 'Text/Highlighter.php' ); require_once( 'Text/Highlighter/Renderer/Html.php' ); // HTML Rendererのインスタンス生成 $renderer = new Text_Highlighter_Renderer_Html( array( 'numbers' => false, 'tabsize' => 4 ) ); // テキスト内のカスタムタグブロックを一つずつ変換 while( preg_match( '/\|code\:([^\|]*?)\|(.*?(?:(?=\|code\:(?:[^\|]*?)\|)|(?=\|\/code\|)))/s', $data, $matches_value ) ){ $type = $matches_value[1]; $value_str = $matches_value[2]; $hlHtml =& Text_Highlighter::factory( strtoupper( $type ) ); $hlHtml->setRenderer( $renderer ); $chgCode = $hlHtml->highlight( $value_str ); $chgCode = preg_replace( '/(\s*(\r\n|\r|\n))/', '', $chgCode, 1 ); // 何となく開始タグの後に改行入れたくなるので $data = preg_replace( '/\|code\:'.preg_quote( $type, '/' ).'\|'.preg_quote( $value_str, '/' ).'\|\/code\|/', $chgCode, $data, 1 ); } echo $data;
これで、$dataには、カスタムタグ内が|code:○○|の○○の部分、つまりPHP構文でハイライトするためのタグ付きのテキストに変換されるはずです。
後は、CSSファイルで色やマージン等を指定すれば、好みの表示方法が実現できます。
実用的な事を考えると、Text_Highlighterがどうこうというより、正規表現の方が肝心だったりという気も若干しますが…。(実際、僕も苦労しました・苦笑)
実際、丸々ハイライトする事ってほとんどないと思いますしね(笑)
こんな感じで、Text_Highlighter 設置プロセスは完結とします。
※このスクリプトにおいて、動作の検証は行っていませんので、責任は一切負いません。
Text_Highlighter 設置プロセス(1)
2008年9月21日 08:38
おはようございます。
最近、和の配色って絶妙で奥が深いなぁ…と日本のわびさびを感じている掛尾です。
さて、このブログで、くだらない事ばかり書いていてもいいのですが、少しは役に立つ事も書きたいなと思って、Tips?なんぞを書きつづってみようかと。
そこで必要になったのが、コードのいわゆるHighlighterというやつです。
探せば種類はたくさんあるのですが、ライセンスの問題などを考慮して、PEARのText_Highlighterというものを使う事にしました。
今回は少し時間を取って設置したそのプロセス第1弾という事で。
僕は基本的にPEARパッケージを手動で設置するので注意して下さい。
1)何はともあれパッケージをダウンロード
PEAR::Package::Text_Highlighterから、Text_Highlighterのパッケージをダウンロード(Text_Highlighter-0.7.1)。
PEARの本体パッケージも必要になるので、PEAR::Package::PEARからダウンロード(PEAR-1.7.2)しておきます。
2)PEARのディレクトリ構成の規則に沿って設置
ダウンロードしたものを解凍すると、たくさんのファイルやらフォルダやらがありますが、今回は必要なものだけ使う事にして、PEARディレクトリを新しく作成して以下の構成にします。
■ ディレクトリ構成
PEAR/
|
+-- PEAR.php
| ※解凍したフォルダの中のPEAR-1.7.2フォルダの中にある
|
+-- Text/
| ※解凍したフォルダの中のText_Highlighter-0.7.1をリネーム
|
+-- css/
| ※この中にハイライト用のCSSファイルを入れる。
| サンプルファイルはTextフォルダにsample.cssがある
|
+-- test.php
※Text_Highlighterを使用するPHPファイル
ここまででとりあえず設置は完了。
他のサイトのサンプルを見ると、大体はこの後text.phpで自分自身のスクリプトを表示させるっていうので終わっているけど、ここではもう少し実用的なサンプルを作っていこうと思います。
このまま書き散らかしても良いんですが、個人的にこういうのを一つの記事で完結してるものを見るのが苦痛なので、何回かに分けて書きます。
次回はtest.phpでMySQLからデータを取得して、その中身にText_Highlighterを適用するという所でしょうか。
ではでは、今回はこの辺で。
争いの彼方には「無」が待っていると思う。
2008年9月1日 18:19
こんばんは。
数日前に、生誕3●周年を迎えた掛尾です。
ようやく朝夕は秋の空気を感じるようになってきましたね。
それでも日中は、少し外出しただけで汗がでるくらい暑い感じはしますけど。
話は全く変わりますが、先日久しぶりにテレビを見ました。
インディペンデンスデイを放送していたので。
前にも一度見た事はあったんですが、その時とはまた違った感覚で見れました。
前に見た時は、「こんな事が起こったら怖いよなー」とか「CGすげー」とか見たまんまというか、漠然とした感じでしたが、今回は、「人の生死やはかなさ」「争う事の空虚」「愛のすばらしさ」などなどを感じ、少し目を潤ませながら見る事ができました。
これも昨今の悲しいニュースや凄惨な事件や争いのニュースのせいでしょうか。
そう考えると、今ここに存在して、自分の好きな事を生業にして、多少は苦しい時もあるけど、楽しく生きていられる事に感謝の気持ちを覚えますね。
少しずつでも誰かを喜ばす事ができる存在になろうと感じたひとときでした。
いよいよ9月に突入。
なんだかんだ言っても今年も残り4ヶ月・・・。
悔いのない1年へのラストスパートですっ!
やっぱり実家は落ち着きますね。
2008年8月10日 02:42
こんばんは。
帰省してすっかりくつろぎモードになってる掛尾です。
今日は朝一で高速バスに乗り、定刻より1時間40分遅れで田舎へ帰ってきました。
さすがはお盆ですねぇ…名神・阪神共にもの凄い渋滞でした。
…が、バスの中ではずっと寝てましたけどね(^-^;
ようやくお昼過ぎに実家へ到着。
近くの田んぼで頭を垂れる稲穂を見て、懐かしくもあり、感激もあり、ふと土まみれになりながら日が暮れるまで遊んだ、子供の頃を思い出しました(*^_^*)
少しゆっくりして、普段は全くと言っていい程見ないテレビを見て大笑いしてたら、もの凄い睡魔が来て、結局夕方くらいからまた、眠ってしまっていて、少し前に目が覚めました(^-^;
こんな感じで、帰省の第一日目は、ほとんど寝てしまっていたという、まったりテイストな一日でした(笑)
写真は、今回は珍しく大人しい実家の猫です。
この子以外に7匹程います(^-^;
[image:ec724bc09c.jpg]
明日から帰省です。
2008年8月8日 19:59
こんばんは!
最近、SEMやらマーケティングやらの本を読みあさっている掛尾です。
いよいよ明日から郷里の徳島へ帰省します。
もちろん阿波踊りも堪能したいですけど、地元人はどちらかというと、花より団子、踊りより出店的な部分も多いのかなと思ったりもします。
根っからの徳島人のくせに、それほど阿波踊りには詳しくないですけど、踊っている人でもやはり「匠」な人っていて、詳しい事は解らなくても、同じように踊っていても「かっこいい」し「美しい」です。
その空間が芸術になってるんですよね…すごいです。
「連」として見るのも良いですけど、個人的には「個人技」を堪能するのが好きです。
それはさておき…。
僕はというと、まったく帰る準備が出来ていません。
まぁ、いつもの事ではあるんですけどね(´・ω・`;A) アセアセ
飲み過ぎ、はしゃぎすぎに気を付けて楽しんできます♪
徳島県徳島市名東町
tel/fax 088-635-5859
営業時間 平日 10:00〜18:00
※打ち合わせ等で不在の場合は、お電話でのお問い合わせに対応できない場合がありますので、ご了承ください。
徳島・香川・愛媛・高知および大阪・京都を中心にご依頼を承ります。その他の地域でも、メール・お電話・FAX・Skype等での作業が可能であれば柔軟に対応いたします。