ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

MT備忘録コミュの【小技】MTタグの値に含まれるhtmlタグから<br>タグだけを抽出したい時の小技

  • mixiチェック
  • このエントリーをはてなブックマークに追加
ブログの記事投稿画面で本文の入力に「リッチテキスト」を使用すると、ご丁寧に<p>タグなんかをはさんでくれます。
しかし、出力結果によっては<p>タグとかは特に不要だったりすることもしばしばなので、よくグローバルモディファイアを利用してhtmlタグを消したりします。

<$mt:EntryBody remove_html="1"$>

上記は 「remove_html」に「1」を指定することによりMTタグ内の値に含まれるhtmlタグを除去します。

しかし、<p>タグとかは特に必要ないんだけど、改行(<br />)だけは欲しいことがよくあります。
テキスト内にちゃんと改行が入っているなら「nl2br」に「xhtml」を指定してやることによって、
改行コードを<br />タグに変換してくれます。

<$mt:EntryBody remove_html="1" nl2br="xhtml"$>

グローバルモディファイアは左から順番に処理を行うので
1.「remove_html="1"」でまずhtmlタグを完全に除去
2.「nl2br="xhtml"」で改行コードを<br />タグに変換
とすれば、<br/>タグだけが残ってくれます。


ところが、「リッチテキスト」は正直かなりな曲者でして、例えば、編集画面内で

テキストテキストテキストテキスト
これは文章サンプルテストです。

と、入力したあと、フォーマットを「なし」変更してみると

<p>テキストテキストテキストテキスト<br />これは文章サンプルテストです。</p>


上記のように「改行コード」を入れずに<br />タグだけをぶち込んでくれます(´Д` )
さすがにこれには絶句せざるを得なかったわけですが、色々調べた結果
「regex_replace」モディファイアで正規表現置き換えをしてやることで解決しました。


<$mt:EntryBody regex_replace="/<br />/g","<br />\n" remove_html="1" nl2br="xhtml"$>

上記のサンプルでは
1.「regex_replace="/<br />/g","<br />\n"」で<br />タグの後ろに改行コードを挿入
2.「remove_html="1"」でまずhtmlタグを完全に除去
(ここで一旦<br />タグが消えて改行コードだけ残る)
3.「nl2br="xhtml"」で改行コードを<br />タグに変換

非常に回りくどいですが、これで何とかなります(笑
ちなみに「regex_replace="/<br />/g","<br />\n"」の「g」ですが、
本来、「regex_replace」は文字列内の一番最初の一つだけしか置き換えをしませんが
置換演算子gを指定してやることによって、文字列内のすべての該当箇所を置き換えてくれます。


主に、自分が忘れたとき用のメモ書きですが、ご参考にどうぞ〜〜〜〜

コメント(1)

最近全然やってなかったMTの仕事がやってきたので、忘れた脳みそを思い出させるために、色々調べモノをしてたら、まさか自分の書いた記事が出てくるとは思わなくて笑ったwwww

さて、上記で書いた方法ですが、
「リッチテキストで勝手に作られたPタグは要らないんだけど、リンクとかのAタグは残しときたいねん(´Д` )」←今回これ
という人用にPタグだけを消す書き方をやってみました。

<$mt:EntryBody regex_replace="/<br />/g","<br />\n" regex_replace="/<p>|</p>/g","" nl2br="xhtml"$>

これで、EntryBody 内に入ってるpタグは一網打尽できます。

これも自分用のメモ書きですが、ご参考までに。

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

MT備忘録 更新情報

MT備忘録のメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。

人気コミュニティランキング