文字数と背景の長さをそろえる
widthで幅を指定しないと(a)のようになってしまうから、(b)のように文字数によって要素の幅が可変するものを作りたい
実際HTML/CSSを書いてみる
<h1>header title</h1>
- まずwidthにemで指定
h1 { background-color: gray; width: 12em; }
背景はみ出まくり。。。
前記事【1emの・・・幅? - Lv.1ノンプログラマの誰得メモ】の通り、文字数と幅指定はあまり関係ないみたい
- 次にwidthにautoで指定
h1 { background-color: gray; width: auto; }
widthをautoにしても意味が無いみたい?
そこで使うのが、displayプロパティ
h1 { background-color: gray; display:inline; }
じゃーん!!
displayプロパティの値をinlineにすることで、本来ブロック要素である<h1>をインライン要素として動作させます。することで、どんな文字数になってもご覧の通り!!
ただし、h1はインライン要素になってるので、前後にインライン要素をつけて
<h1>title</h1> <a href="index">これはリンクです</a>
としてしまうと
このようになってしまいます
なので、divのようなブロック要素で囲むことによって
<div><h1>title</h1></div> <a href="index">これはリンクです</a>
htmlspecialchars()関数
htmlspecialchars()は、 HTML において特殊な意味を持つものを、 HTML の表現形式に変換するための関数。
例えば、この関数を使ったものと、使わないもので比べてみる。
sample04a.php
<?php //htmlspecialchars()使用// print ('name : ' . htmlspecialchars($_REQUEST['my_name'] , ENT_QUOTES).' <--使用'); print ('<br />'); //htmlspecialchars()未使用// print ('name : ' . $_REQUEST['my_name'].' <--未使用'); ?>
じゃあ次
「<strong>めぐさん</strong>」と入力してみる
んん?!
htmlspecialchars()を使ってない方は、見事に<strong>タグが反映されちゃってますね
これは<abc>という意味のないものでも、”<”と”>”で挟まれた記号はHTMLタグと誤認識されるらしく、表示されない
表示させたい意味のある文字列を入力したとしても、これじゃあ表示されないし、HTMLタグが入れられるということは、レイアウトが崩壊したり、ハッキングされたり〜、非常に危険
だから、htmlspecialchars()を使おうぜ!!
htmlspecialchars()の2つ目のパラメータ”ENT_QUOTES”は、「'」 (シングルクオート) は 「&#039;」になります