Home > Archives > 2007年03月15日

2007年03月15日

Nucleus の改行をちょっと頭よくする

編集画面での改行位置に自動で改行(<br />)を入れるようにしているのだけど Nucleus は <pre> タグの内部にまで改行を入れてくれる.結果として二重の改行となってしまいひじゃうに見栄えが悪い.

ということで,ソースをいじって <pre> タグの内部に改行入れないようにしてみた.nucleus/libs/globalfunctions.php にある addBreaks というのが編集後の保存時に改行を挿入している関数らしい.

function addBreaks($var) { return nl2br($var); }

php のnl2br という関数を使って一律に改行の挿入を行っているので,これを pre タグの内部と外部で挙動が変わるように変更.

function addBreaks($var) {
  $i=0;
  $v2="";
  $n=mb_strlen($var);
  while($i<$n){
    $p=mb_strpos($var,"<pre",$i);
    if($p==FALSE){
      $v2.=nl2br(mb_substr($var, $i));
      break;
    }
    $v2.=nl2br(mb_substr($var, $i,$p-$i));
    $i=$p;
    $p=mb_strpos($var,"</pre>",$i);
    if($p==FALSE){
      $v2.=mb_substr($var, $i);
      break;
    }
    $v2.=mb_substr($var, $i,$p-$i);
    $i=$p;
  }
  return $v2;
}

もっときれいに書けるだろうけど必要十分なので汚さはむし.

Home > Archives > 2007年03月15日

Search
Feeds

Page Top