スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Smartyのmodifierの組み合わせの代替ユーティリティ

Smartyにはmodifierと言われる変数の出力時に変数に適切な処理を施す命令があります。
これは重ねがけできるんですが、組み合わせによっては、お互い足をひっぱってうまく表示できないことがあります。
escape,wordwrap,default,nl2brを同時にかけようと思ったらうまくいかなかったので、ユーティリティを作成して対応してみました。
各modifierを説明します
・escapeはXSS対策のために、HTMLの特殊文字を置き換える操作です。
・wordwrapは長すぎる半角文字列を適当なところで切るために使用します。各文字間に0サイズのスペースを入れることで対応しています。ちなみに通常のmodifierとしてのwordwrapは日本語に対応していません。
・defalutは値が設定されていない時に、デフォルト値を与えます。
・nl2brは改行毎にbrタグで置き換えます。

<?php

class Uv_Util
{
static public function allModifier($value) {
// default:''
if (!isset($value)) {
return '';
}

// 日本語に対応した文字列の各要素を配列に変換
preg_match_all('/./u', $value, $ary);

$result = '';
foreach ($ary[0] as $val) {
if ('\n' === $val) {
//nl2br
$result .= '<br/>
';
} else {
// escape
$result .= htmlspecialchars($val, ENT_QUOTES);
// wordwrap
$result .= '&#x200B;';
}
}
return $result;
}
}
スポンサーサイト

COMMENTS

COMMENT FORM

TRACKBACK


この記事にトラックバックする(FC2ブログユーザー)

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。