日本だんでぃ協会
Japan Dandy Association

中の人プロフィール
だんでぃ
web拍手作った人
プログラマーでミュージシャンだと言い張って聞かない43才

おこんてんつ
  トップ
プログラミング (12)
デカ文字ジェネレータ
  音楽 (7)
  ポーカー (1)
  雑記 (1)

リンク
ろじっくぱらだいす
老舗のプログラム系テキストサイト。web拍手を思い付くきっかけをいただいたサイトです。ワタナベさんラヴ!

■機能しているHTMLタグと、機能せずにそのまま表示されるHTMLタグを記事内で混在させる

2017/01/16 01:08 作成
2017/01/16 01:14 更新
さて、今回は
・記事内にHTMLのソースコードを書きたいときにHTML特殊文字のエスケープがめんどくさい
という問題に対応していきたいと思います。

このサイトは、よくあるブログみたいに管理画面上のテキストエリアに文章を入力することで
記事の更新を行っています。

んで、例えばテキストエリア内に

<b>太文字にしてみます</b>

と入力すると、文章内のHTMLタグはちゃんと機能して、実際の記事上では

太文字にしてみます

こんなふうに表示されるんですけど、
プログラミングの事を書こうとすると、どうしても記事内に

これは太文字になります
<b>これは太字になりません</b>

こんな感じで、HTMLタグをそのまま表示させたいニーズも出てきます。

そんなことは世界中のプログラマーの皆さんが思っていたことなので、すでに対応策が用意されています。
それは、テキストエリア内に

&lt;b&gt;これは太字になりません&lt;/b&gt;

と記述することで、実際には

<b>これは太字になりません</b>

と表示させることができるというものです。

「<」を表示させたいところに「&lt;」と入力し、
「>」を表示させたいところに「&gt;」と入力すれば、
それは本来のHTMLタグの機能を持たず、ただの記号として表示することができるわけです。

こういう、本来の機能を失わせる記述の事を「エスケープ」って言うんですけど、
記事の更新をするときにいちいち「&lt;」とか入力しているとめんどくさいので、
必要なタイミングでHTMLタグの有効化と無効化を切り替えられるようにしてみたいと思います。

結論から言っちゃうと、記事内に記述する特別な意味を持つ文字列を設定し、
それをHTMLタグの有効化/無効化のスイッチにしちゃうわけですね。

テキストエリアに以下の感じで入力します。
<b>これは太字になります</b>
!DECODE_OFF
<b>これは太字になりません</b>
!DECODE_ON
<b>これは太字になるように戻っています</b>

すると、記事上では
これは太字になります
<b>これは太字になりません</b>
これは太字になるように戻っています

こんな感じに表示されるようにPHPを改造しています。

多分これで「&lt;」とか入力するよりもラクにHTMLのソースを記事上に表示できるようになったと思います。

取りあえずはこれで
・記事内にHTMLのソースコードを書きたいときにHTML特殊文字のエスケープがめんどくさい
という問題は解決できたと思うので、次回は
・テキストエリア内でタブキーを押すと、タブが入力されずにカーソルがテキストエリアを出ちゃう
の問題解決に取り組んでみたいと思います。

お楽しみに!



前の記事 テキストエリアに入力したjavascriptと、PHPのnl2br()の相性問題【解決編】
次の記事 テキストエリア内にタブを入力する
2024 日本だんでぃ協会 All Rights Reserved.