今日もガクリ('A`)
きっと明日もまたガクリ?('A`)
2008 / 02
« «  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29  » »
archive for 2008年02月
CSS を PHP のヒアドキュメントとして

この件で検索を行っても CSSPHP のヒアドキュメントとして、記載する方法が見つからなかったのでメモとして記事にします

CSS を記載する方法としては style 要素の中に記述するか、link 要素の中にスタイルシートの URI を記載して UA に読み込ませると言う 2つの方法がありますが、今回、ここで記載するのは後者の方です。何故この様な事を考えたかと言うと、いい加減此処の超カオス気味のスタイルシートを何とかしたいと思った次第です

PHP の公式マニュアルによると PHP: 基本的な構文 - Manual たいていの場合、PHPHTML ドキュメントの中に埋め込まれます と記載されています。たいていの場合? では、別に HTML でなくてもいい訳です。参照先にその具体例が記載されています。そこで、まず行ったのが HTML の head 要素内の link 要素を以下の様に修正

<link rel="stylesheet" type="text/css" href="filename.php" media="all" />

スタイルシートを指定しているファイルのサフィックス部分が php になっている所がポイント。で、実際のスタイルシートファイル(.php) は以下の様に記述します

@charset "UTF-8";
<?php
  $color = 'pink';
  $background = 'green';
?>
body {
  color: <?php echo $color; ?>;
  background-color: <?php echo $background; ?>;
}

ブラウザをリロード行っても…真っ白けです。どぎつい配色になるはずなんですが、これはスタイルシートが適用されていないようです。つまり、UA がスタイルシートとして認識しなかったようです。そこで Proxomitron 1 のログウィンドウを開いて、もう一度リロードを行います。案の定 PHPHTTP レスポンスヘッダー Content-Type のメディアタイプに text/html として返しています。これが原因の様です。つまり、スタイルシートならばメディアタイプを text/css として返さなければならないのに UA に対して HTML 文書ファイルですよ。と、返してしまっている訳です。これは、PHP の設定 default_mimetype が text/html となっているので正常な動きです。そこで、スタイルシートファイル(.php) を以下の様に修正します

<?php header('Content-Type: text/css; charset=utf-8'); ?>
@charset "UTF-8";
<?php
  $color = 'pink';
  $background = 'green';
?>
body {
  color: <?php echo $color; ?>;
  background-color: <?php echo $background; ?>;
}

どうってことはありません。header 関数にてデフォルトのヘッダーを置き換えてやっているだけです。ブラウザを再度リロードするとスタイルシートが認識されました。本来ならば、ここで終了なんですが、link 要素のファイル名の指定が php となっているのがどうもかっこよくない。そこで、HTTP サーバーのアクセス制御ファイルを以下の様に記述します 2

<FilesMatch "filename\\.css">
  SetHandler application/x-httpd-php
</FilesMatch>

あとは、HTML の head 要素内の link 要素のファイル名指定部分の phpcss に変更。実際のファイル名も css に変更。実際にブラウザをリロードしてアクセス制御ファイルが効いているか確認して終わりです

これには色々と応用が効きます。各 UA に対応させる為に UA のバグを逆用して苦労してスタイルシートの読込みの振り分けなどを行っている様ですが、PHP 変数の $_SERVER["HTTP_USER_AGENT"] で判定を行えばいいのです。3 他には、色を容易に変更できる様に PHP の変数としておけば、変数の値を変更するだけで配色の変更が可能です。などなど…PHP コードが記述できるので、良いと思います 4


  1. 私が常用している HTTP フィルタリングソフト。参照: Proxomitron-J
  2. Apache HTTP Server の場合
  3. $_SERVER["HTTP_USER_AGENT"] は UA によっては偽装できるので完全に振り分けることは不可能です
  4. PHP が動かせて、なおかつ、HTTP サーバーアクセス制御ファイルが置けない環境じゃないと意味ありませんが…
CSS, PHPcomment (1)trackback (1)(15,512)
blog parts : お天気アイコン

またもや PHP でブログパーツなるものを作ってみました。サイドバーに表示されているお天気アイコンがそうです

いい加減、カオス気味の此処のスタイルシートを何とかしないと…('A`)

blogno commentsno trackbacks(3,884)
WordPress の事

標準の table 要素で行うカレンダーは気に入らないので PHP で自作しました。表示フォントはちょっとオサレに Georgia を使っています。Windows, Mac の人もオッケーだと思います

話はチョット変わって、此処のブログシステムの事ですが、フッターに表示している様に WordPress 1 を使用しています。先の記事で、記事の移行はあっさりと終ったと書きましたが、実はあの後に色々とありました…('A`)

  1. 記事の中の div 要素がことごとく p 要素になってる!

    ところが phpMyAdmin 2 にてデータベースの中身を除くと、ちゃんと div 要素としてデータに入っています…WordPress Japan のフォーラムを検索すると、こんな記事が…WordPress Japan :: トピックを表示 - 記事投稿でCSS....【エディタの不具合?仕様?】・・解決 と言う訳で、早速ダッシュボードのユーザー設定にて ビジュアルエディタを使用する のチェックを外して、この問題は解決

  2. ピリオド(.)が 3つ連続してあると全角の 3点リーダー(…) に置き換わってしまう

    データベースの中は置き換わっていないので、表示する際のフィルターの問題でしょう。それにしても、此れは大きなお世話。この問題は解決していませんが、時間ある時に調べてみます

  3. blockquote 要素の中に注意!

    この要素の中に以下の文字が入っていると、表示の際に勝手に別の文字に置き換わってしまいます

    1. シングルクォート(')
      全角っぽいシングルクォートに勝手に置き換わる
    2. ダブルクォート(")
      全角っぽいダブルクォートに勝手に置き換わる
  4. phpMyAdmin のインポートしたデータに改行を入れた所が \r\n という文字列に置き換わっている

    これ、表示の際に復帰改行に変更しているんですが、文字コードで言うならば、0x0d 0x0a を出力している為、UA によっては br 要素と同じように復帰改行してしまう…


上記の 1番以外の問題は恐らく表示する際のフィルター問題でしょう。時間ある時にソースコードを追っかけて調べてみたいと思います。取り敢えず、今は文字参照やキャラクターエンティティを使用して回避しています。改行の問題も文章間に改行を入れないようにして回避しています。いずれも運用で回避できる問題ですが…


  1. WordPress を使用しています。PHP で書かれているので、私にとっては改造が楽です
  2. MySQL をブラウザで管理できるように PHP で書かれた MySQL 管理ツールです。多言語サポートしています。参照 »» phpMyAdmin | MySQL Database Administration Tool | www.phpmyadmin.net
blog, WordPressno commentsno trackbacks(5,400)
Welcome to WordPress
WordPress の世界へようこそ。 このテスト用の投稿は、インストールが問題なく終了したことを意味しています。早速この内容を編集、もしくは削除してあなた自身のブログを始めてください。
etccomments (9)trackback (1)(5,908)
contents
most viewed (809241)
categories
archives
recent posts
recent updates
recent comments
recent trackbacks
beef casino casino game online slots casino game online slots betting casino mi online game casino online game casino online game betiing slots casino online game betting slots casino online game pin up casino online game slots casino online game slots betting casino online pinco game casino online pin up game casino online pin up game slots betting casino pinco online game slots casino pin up online game casino pin up online game betting slots casino pin up online game bolivia CMD CSS DARK SOULS DARK SOULS 3 DARK SOULS III Domain change DVD Fugu Casino Label Notice online casino game betting poker slots Powercfg SP1 Steam Windows 7 Windows 7 SP1 DVD Label WordPress казино играть лучшие онлайн казино топ 10 лучших онлайн казино топ лучших казино топ рейтинг онлайн казино ダークソウルズ ドメイン変更のお知らせ ラベル 窓辺ななみ 電源オプション 電源プラン
mobile
qrcode:home
profile
曇り札幌市中央区 ‘ 曇り
気温: 10℃ ‘ 湿度: 66%
recommends
Valid XHTML 1.0 Transitional Valid CSS X.X
RSS 2.0 RSS 0.92
RDF/RSS ATOM
get Firefox 2 get Opera
ie