smartyのnl2brは改行コードを<br>に変更します。しかし、<pre>タグと併用すると、二重改行が発生します。(改行コード\nを保持し、<br>も追加される)
ここでsmartyのnl2brプラグインを改良し、2重改行を防ぐ方法を紹介します。
※ポイント:
<pre>・・・</pre>タグ中の改行コードが<br>に変更しない
■nl2br.phpコードの抜粋
# First, check for <pre> tag. return nl2br if <pre> not exist.
if(strpos($string, '<pre') === false){
return nl2br($string);
}
$output = '';
$preIn = false;
# If there is a <pre>, we have to split by line
# and manually replace the linebreaks with <br />
$strArr = explode("\n", $string);
# Loop over each line
foreach($strArr as $key => $line){
# See if the line has a <pre>.
# If it does, set $preIn to true
if(!$preIn && preg_match('/<pre/', $line)){
$output .= $line."\n";
$preIn = true;
continue;
}
else if($preIn && preg_match('/<\/pre>/', substr($line, 0, 6))){
$output .= $line."\n";
$preIn = false;
continue;
}
# If we are in a pre tag, just give a n, else a <br />
$output .= $preIn? $line."\n":$line."<br />\n";
}
return $output;
♪ 当記事がお役に立ちましたらシェアして頂ければ嬉しいです。
★ 当記事を閲覧の方は下記の【関連記事】も閲覧していました。
zanmai @2016年03月31日
» ①②③④の順で設定できるはず。…