ホーム » ブログ » smartyのnl2brとpreタグ併用で二重改行を防ぐ方法
このエントリーをはてなブックマークに追加
@2013/06/21

スポンサーリンク
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;

♪ 当記事がお役に立ちましたらシェアして頂ければ嬉しいです。
0人
このエントリーをはてなブックマークに追加


★ 当記事を閲覧の方は下記の【関連記事】も閲覧していました。

お名前:

 

EMAIL:

 

URL:

 

認証コード:

zanmai.net-safecode

 


※会員の方は認証コードを要らないから、新規登録をオススメ!

check