タイポグラフィークラス
タイポグラフィークラスは、文字列のフォーマットに役立つメソッドを提供します。
クラスの初期化
CodeIgniterの大部分のクラスと同様、タイポグラフィークラスはコントローラの中で $this->load->library メソッドを使って初期化します:
$this->load->library('typography');
いったん読み込まれると、タイポグラフィーオブジェクトは、次のようにして利用可能です: $this->typography
auto_typography()
テキストを、意味論的にも体裁的にも正しいHTMLにフォーマットします。入力した文字列を、以下のような体裁に整形して返します:
- 段落を <p></p> タグで囲みます(2つの連続する改行を段落の区切りと認識します)。
- <pre> タグ内にあるものを除いて、改行を <br /> タグに変換します。
- <div> タグのようなブロックレベル要素は、段落として囲まれませんが、そのブロックレベル要素が含んでいる段落は、段落として変換されます。
- 引用符は、タグ内にあるものを除いて、見栄えのよい引用符の実体参照に変換されます。
- アポストロフィは、見栄えのよいアポストロフィの実体参照に変換されます。
- (「 -- 」や「--」のような)2つのダッシュは、長いダッシュ「—」に変換されます。
- 単語の前後にある3つの連続するピリオドは、省略形の「…」に変換されます。
- 文章に続く二重の半角スペースは、二重スペースに見せかけるため、改行無しスペースに変換されます。
使用例:
$string = $this->typography->auto_typography($string);
パラメータ
オプションで2つの引数があります:
- JavaScript のイベントハンドラを無効にします。 パーサがセキュリティのために、全ての JavaScript のイベントハンドラを無効にすべきかどうかを指定します。ブール値の TRUE か FALSE で指定します。
- 改行の数を減らします。パーサが2つ以上の連続した改行を2つに減らすべきかどうかを指定します。ブール値の TRUE か FALSE で指定します。
デフォルトでは、パーサは JS のイベントハンドラを無効にし、改行は減らしません。言い換えると、引数を何も指定しなければこのように指定するのと同じです:
$string = $this->typography->auto_typography($string, TRUE, FALSE);
Note: この処理は、文章が大量である場合は特に、プロセッサーに負荷をかけます。 このメソッドを使う場合、ページをキャッシュする事も検討した方が良いかもしれません。
format_characters()
このメソッドは、文字列変換のみを行うという点を除けば、上記の auto_typography メソッドと似ています:
- 引用符は、タグ内にあるものを除いて、見栄えのよい引用符の実体参照に変換されます。
- アポストロフィは、見栄えのよいアポストロフィの実体参照に変換されます。
- (「 -- 」や「--」のような)2つのダッシュは、長いダッシュ「—」に変換されます。
- 単語の前後にある3つの連続するピリオドは、省略形の「…」に変換されます。
- 文章に続く二重の半角スペースは、二重スペースに見せかけるため、改行無しスペースに変換されます。
使用例:
$string = $this->typography->format_characters($string);
nl2br_except_pre()
<pre> タグ内にある場合を除き、改行を <br /> タグに変換します。このメソッドは、<pre> タグ内を無視するという点を除けば、PHPのネイティブ関数 nl2br() と同じです。
使用例:
$string = $this->typography->nl2br_except_pre($string);
protect_braced_quotes
タイポグラフィークラスをテンプレートパーサクラスと一緒に利用している場合、括弧({})内のシングルクォートやダブルクォートをそのまま利用したい、というケースがよくあります。そういう場合は、クラスのプロパティ protect_braced_quotes を TRUE に指定してください。
使用例:
$this->load->library('typography');
$this->typography->protect_braced_quotes = TRUE;