REDLINE MAGAZINE | 実体参照に変換するやつ作りたいREDLINE MAGAZINEトップページへ

すべてのエントリを見る

実体参照に変換するやつ作りたい

来週まで忙しくなりそうなんだけど、せっかくPHP勉強してんのに少し休むとすぐに忘れてしまいそうなので、ちょっとでも何かやって記憶を繋いでおかなきゃ・・・と思った。ちょうど手があいたので、ちょっと勉強する。

こういうブログを書いてるとソースをエントリに記載する事も多いのですが、一旦実体参照に変換してから書かなきゃならないじゃないですか。そういうのパパっと変換できるツールを提供してるサイトもいろいろあるんですが、それ、PHPでどうやったらいいんかな、というのが今日の課題。以前コメント欄にソース書いてくださった方で「<」や「>」を含むソースを直接書いてくださったんだけど消えちゃってたみたいな事もあったような気がするので、その辺りでも使えたらいいな、と。

変換するものを考える

考えるって大袈裟だけど、とりあえず変換せねばならんのが「& → &amp;」「< → &lt;」「> → &gt;」「" → &quot;」この辺り。htmlspecialcharsでエンティティ変換するようなやつってこと。

文字列を置き換える

PHP: str_replace - Manual

str_replace関数は検索文字列に一致したすべての文字列を置換する関数。つーことでコレを使う。正規表現の関数とどっちがいいんだー?って迷ったけど、なんか・・・そんなに高度なことしなくていい気がしたのでこっちで。

テキストエリアに入力されたものをボタン押したら置き換えて表示っていう風にしたい。で、やってみた。

>>実体参照に変換するやつ

2パターン考えた

htmlspecialcharsでまず変換バージョン

入力されたものを変数に入れてhtmlspecialcharsでまず変換。それから置き換えたいものを個別にstr_replaceで置き換えるっていう風に考えたバージョン。

str_replaceでいきなり置き換えるバージョン

なんで2パターンあるのよっていうのは、なんか・・・こういうのって「とりあえずhtmlspecialchars使わなきゃ」っていう初心者的危機感と「別にどうせ置き換えてるんだからhtmlspecialchars使わなくてもいいんじゃないの?」っていう疑問から。

苦戦したところ

$str = str_replace("\\&amp;","&amp;",$str);
$str = str_replace("\\\\","\\",$str);

なんか\マークスパイラルに陥って「ウガーーー」ってなった。何かムキになって夢中で\さんと戦って、今となっては何を考えていたのかも覚えてない。HTMLとかCSSのソースならいいんだけど、PHPのソースで「\"」みたいに\マークが絡むとエラいことになって「うわーー」って。で無我夢中になった対処結果が上。一応私がいろいろ試したソース達ではうまくこといってる。何か間違えてるんだろうなぁ。ちくしょう。冷静になってからもっかい考えよう。

<< htmlSQL すごかった。感動した。 | magic_quotes_gpcとstripslashes関数 >>

トラックバック

このエントリーのトラックバックURL:
http://redline.hippy.jp/cgi/mt/mt-tb.cgi/232

このページの一番上へ

その他の情報など

最近のコメント

PHP オブジェクト指向の勉強
  • Red - 2010.01.08
  • hogepage - 2010.01.21
  • Red - 2010.01.22
  • - 2011.11.27
  • houseiii - 2011.11.27
Fireworks トリミング画像を一括書出 CS4編
  • Iper - 2009.06.27
  • Red - 2009.06.27
  • mala - 2011.11.17
  • Red - 2011.11.18
jQueryでボックスを上下左右中央に簡単配置
overflow を使用したボックス背景のこと
  • - 2007.12.13
  • Red - 2007.12.13
  • - 2007.12.13
  • Red - 2007.12.13
  • hj - 2011.09.23
IE6 → 透過PNG+overflow=混ぜるな危険(追記有)

メッセージを送る

こちらのメッセージ送信フォームは閉鎖させて頂きました。
御用の方は新しい方のブログ にコメント頂くか、 連絡用のフォーム もありますので、そちらからご連絡ください。