MTの「改行を変換する」について
後々にわからなくなりそうなので、まとめておくと・・・。
■ まず、1行の空間(\r\n\r\n or \n\n)で、段落として区切っている。
■ 区切った前後を、<p>、</p>で囲む。
■ 条件式は、lib/MT/Util.pmの295付近。(初期値↓)
赤字部分に含まれるタグは、直前に1行の空間があっても<p>で囲まれない。
そして、自動改行されなくなる。
しかし、場合によっては囲まれる。
(実際にはブロック要素を囲むことができないので、直前直後に<p>、</p>が補完される。)
<div>文章1-1
文章1-2</div>
←空行
←空行
<div>文章2-1
文章2-2</div>
←空行
←空行
←空行
<div>文章3-1
文章3-2</div>
のときには、以下のようになる。
<p><br /> <div>文章2-1<br /> 文章2-1</div></p>
<p></p> <div>文章3-1文章3-2</div>
<p>で囲まれれば改行するようにもなる、という訳だが、私としては<p>が嫌だ。
しかし改行は欲しい。
blockquoteについては云々ありそうです・・・。
また、pre、textareaについては、もうちょっと嫌な感じになってしまう。
(赤字部分にtextareaを足したとして)
<textarea>
文章1
</textarea>
←空行
←空行
<textarea>
文章2-1
文章2-2
</textarea>
←空行
<textarea>
文章3-1
文章3-2
</textarea>
が、以下のようになる。
文章1
</textarea>
<p><br /> <textarea> <br /> 文章2-1 <br /> 文章2-2 <br /> </textarea> </p>
<textarea>
文章3-1
<p>文章3-2<br /> </textarea><br /> </p>
<br />はテキストエリアに出てくるし、空行をつくってしまうと<p>まで出てくる。
<br />を消す方法にについては、
エントリーにpタグとbrタグが入る仕組み(その3:textareaにbrタグを挿入しない)
で書いていらっしゃいますが、空行はやはり使えない(スペースが存在すれば大丈夫)。
以上を踏まえて、私の希望する動作は、以下。
■ <p>で囲んで良いのは、むしろ文字列だけ。
■ <p>で囲まなくて良い、改行も挿入される必要がない。
→ h1、h2、h3、・・・(これは私は使用しないが)、殆どのタグ。
→ 赤字部分に入れておけばOK。
■ <p>で囲まなくて良い、改行は挿入してほしい。(このタグの中で<p><br />は使っても良い)
→ div
■ <p>で囲まなくて良い、改行したい。(このタグの中で<p><br />は使いたくない)
→ pre、textarea
ということで、試行錯誤中。
うまくいきませんな・・・。
こうなってくると、手で書いた方が早い気もしますね~・・・。
(追記)
結局、こんな感じにしてみました。
div、blockquoteには<br />だけ付加
textareaの場合は、指定文字(ここではto\n)で空行挿入
・・・無理矢理ですけど。
本当はtextareaの中では段落分けして欲しくないけど、ここに来る前に分けられてるんだよなぁ・・・。
もっと前から分岐させなきゃならなくなる。
preは空行は作らず、自分で<br />を書き込むんですな・・・。
中途半端な感じ(苦笑)。
スッキリしないなぁ。
コメント(4)
なるほど。
とーこさんの希望、わかりますー。
私も何だか気持ちが悪くって、タグを1つでも使う時は
Dreamweaverで作ってから貼り付けています。
しかし、そうするとデフォルトで入る改行が<br>になってしまう…。
という訳で、私の方はDreamweaverの改行を
<br />に変更する方法を、何日も探し中です;;
> のんさん
タグが気持ち悪いですよね~;;
ヤプログの時には諦めていたのですが、MTですしね。
\nは増えてしまいますが、大体思うような形にはなったようです。
しかし今度は他のところがおかしくなってきたわ;
キリがないです(笑)。
こんにちは。
改行変換処理をより使いやすくするプラグインを作ってみました。
http://www.h-fj.com/blog/archives/2005/08/28-160725.php
テキストフィルターを追加する形になりますので、必要に応じてMT標準の改行変換処理と使い分けることができます。
> 壱さん
うわああ~。
すごいです、有り難うございます。
早速、ダウンロードさせていただきますね。