Articles - PHPに関する記事

2003年12月

CSSのcontentが生成する内容を動的に変化させる方法(2003-12-13)
CSS2ではcontentで内容を生成することが出来るが、PHPやJavaScriptのように動的に生成内容を変化させる手段は与えられていない。考えれられるのはattr(X)を値として、セレクタの主体が持つ属性Xの値を取得すること方法だ。しかし、勝手に属性を増やすことは出来ないので表現に限界がある。もう1つ、CSSのセレクタを使う方法もある。同じCSSをインポートしているすべてのページに対して一般化できる内容ならばセレクタでほぼ解決できる。
PHPでディレクトリツリー生成(2003-12-16)
ファイルの位置が変わったからといっていちいちサイトマップを作り直すのは面倒だし、新規ファイルを追加するのも面倒、ということで、自動で作ってみましょう。
XSLT関数の挙動(PHP4.3.4)(2003-12-18)
DOCTYPE内で直接ENTITYで実体参照を定義した場合、各要素に対して適当な定義がされていない、つまりENTITYしか書いていない状態でもエラーは起きない。定義されていない参照をするとエラーが起きる。DTDとしてはおかしい(?)が定義された参照が反映されている。
PHPでHTTPリクエストをしてみる(2003-12-20)
404をチェックするにはHTTPリクエストが出来なくてはいけないと言うことで、まずはHTTPのHEADレスポンスを取得するスクリプトを書いてみます。
PHPでリンクしているURIのリストを取得(2003-12-20)
HTTPのHEADリクエストは出来るようになったので、次はチェックすべきURIのリストを制作します。
PHPでリンクしているURIのリストをサイト全体から取得する(2003-12-20)
指定したURIだけではなく、リンクをたどってサイト全体からリンクしているURIのリストを取得してみます。具体的には前回の『PHPでリンクしているURIのリストを取得』で再帰処理を行います。
PHPで楽して404チェック(2003-12-20)
サイトを制作してからある程度時間が経つとリンク先のサイトの移転などでリンクが機能しなくなってきます。1つ1つ確認するのは面倒なので、スクリプトでサイト全体のリンクを確認してみようと思います。
XSLT関数をWindows上のPHP4.3.4で実行する際の注意(2003-12-23)
XSLT関数を使う場合、Windows上ではファイルパス指定方法がわかりにくいので自分で実験して最も汎用性が高い物を書いておきます。
XMLデータを読み込むときにeval()関数を使う(2003-12-26)
XSLT関数にXMLデータを渡す方法はXMLファイルを指定する方法とXMLデータを配列で渡す方法があります。
PHPでコンテントネゴシエーション(2003-12-26)
PHPでUAがくれる情報を元に判断してみる。IE6は*/*なのでfnmatch()を使わない単純な比較なら逆に何にも一致しません。Mozilla1.6bのHTTPリクエストヘッダにはapplication/xhtml+xmlがあるので一致します。
外部参照されたDTD内でさらに外部のXMLファイルを参照する場合(2003-12-26)
上のようなディレクトリ構成で(hoge.xmlはルートと「bar」ディレクトリにそれぞれある)foo.xmlはbaz.dtdをDOCTYPE宣言で外部参照参照している。また、foo.xml内には実体参照&ent;が含まれる。
PHPでXSLT関数を使ってXHTMLを出力するときのテクニック(2003-12-27)
XSLTの属性などではどうにも出来ません。処理が終わった後のデータをこんな感じで置換しましょう。/>の前が半角スペース以外だったら半角スペースを足してあげます。

2004年01月

PHPでサイトマップ生成(2004-01-13)
PHPでディレクトリツリー生成』に関してフィードバックをいただきました。
URIあれこれ(2004-01-13)
「/category?name=html」のようなURIは複雑で嫌なので(SEO的にも良くないようだ)、「/category/html/」でアクセスできるようにした。最後のスラッシュを付けるべきか付けないべきか悩んだのだが、ディレクトリに偽装した方が検索エンジンには登録されやすい気がしたので付けておいた。
XREAでPHPを使うなら(2004-01-13)
PHP4.2.0からは標準でOFFになっているregister_globalsですが、XREAではサーバによってONのままになっている事があります。phpinfo()で確認してみてください。
PHPのテスト環境を外部から隠す(2004-01-15)
ローカルサーバでPHPのテストはしたいけど、外からアクセスされたときは違うページを表示したい場合、ApacheならVirtualHostを使えば「localhost」でアクセスした時とDDNSで取得したドメインなどでアクセスした時に表示するページを変えることが出来る。
XMLベースのウェブサイトを構築する(1)(2004-01-20)
3ヶ月ほど運用してみてだいぶ設計が決まったので、継ぎ接ぎで作って来たシステムを今回一新した。XMLベースのウェブサイトの一例として大まかな設計を書いておく。
XMLベースのウェブサイトを構築する(2)(2004-01-20)
XMLベースのウェブサイトを構築する(1)』ではこのサイトの大まかな設計を例として挙げたが、XMLをベースに動的なページを作る際のスクリプト言語が介入するレイヤーをどこにするかは難しい問題だ。
PHPでナビゲーションバー生成(2004-01-21)
このサイトの上下にはスクリーンショットのようなナビゲーションバーが付いて現在地を把握することが出来ます。こういったサイト内で統一されたナビゲーションバーを元になるXMLやHTML文章に直に書いてしまった場合、上位のディレクトリのファイル名が変わったときなどに一気に複数のファイルを書き換える必要が有るため不便です。
モジュール版PHPで「If-Modified-Since」に対応する(2004-01-25)
CGI版PHPではApacheがうまく計算してHTTPリクエストヘッダの「If-Modified-Since」に対応してくれるらしいが、モジュール版PHPでは自力で実装しない限り常に「200 OK」が返される。はてなアンテナなどのアンテナ類のなかには「If-Modified-Since」を元に更新の判定を行っているものがあるが、PHPで生成しているページでは上記の理由で結局全体をGETすることになってしまう。そこで今回はこれに対応するための関数を作ってみる。
PHPで「Last-Modified」を送信する(2004-01-25)
通常PHPの送信するHTTPレスポンスヘッダには「Last-Modified」が含まれない。しかし、ナビゲーションなど一部のみをPHPで作っている場合にはこれは不便だ。
PHPで隣り合うアルファベットを求める(2004-01-30)
この記事が属しているArticlesというコンテンツ内では各記事のIDの末尾がアルファベットになっているため隣り合う記事を走査する為には隣り合うアルファベットを求める必要がある。PHPには次のアルファベットを求める関数がないので自前で実装してみることにする。
XMLベースのウェブサイトを構築する(3)(2004-01-30)
前回の記事結論としてはPHPが扱うXMLファイルは単なるデータとして、直接GETするXMLファイルの動的部分はスクリプトで生成すれば良いということになるのだろうか。と書いたが、その後より深く考えるとスクリプトを含むXMLファイルを直接GETするのは冗長性が多すぎることに気が付いた。

2004年02月

XHTML1.1とXHTML1.0の両立(2004-02-06)
Another HTML-lintでXHTML1.1をチェックするとHTML内のmeta要素とHTTPレスポンスヘッダ内のContent-typeフィールドの値が「text/html」だった場合に減点されるようになった。これはXHTMLのメディアタイプに関するW3Cのノートに基づいた判定で、本来ならXHTML1.1では「application/xhtml+xml」が最も適した値とされている。
DomDocument->get_element_by_id使用時の注意(2004-02-11)
PHPのヘルプには書いて無いが、DomDocument->get_element_by_idの使用には一種の制限がある。
Windows上でコマンドライン版PHPを使う(2004-02-12)
PHPというとWEBアプリケーションのイメージが強いがコマンドプロンプト経由で実行してもPerlと同様非常に強力な言語である。
PHPのDOM XML関数のうちXpath系のメソッドを使う時の注意(2004-02-14)
XSLT関数に慣れていると名前空間の仕様に混乱するかもしれないので簡単な説明を書いておく。PHPのバージョンは4.3.4だ。
Geckoのtext-justifyをもう少しきれいに(2004-02-24)
Geckoののtext-justifyは日本語対応が今ひとつなのでDOMを使って何とかしてみる。
W3C-DTFを解析する(2004-02-24)
WEBでよく使われる日付の表記方法W3C-DTFをPHPで扱う為の簡単な関数を作る。本来ならばstrtotime()を使いたい所だが、残念ながらW3C-DTFだとそのままではうまく動かない。

2004年04月

PHPのURI引数に対する挙動(2004-04-27)
XMLでは実態参照区切り子以外の「&(アンパサンド)」は実態参照(「&」もしくは「&」)に置き換える必要がある。この決まりはURI中に登場する場合――多くはGETメソッドでの引数の区切りに使われる――でも同様で、必要に応じてエスケープする必要がある。

2004年07月

PHP4.3.5のXSLT関数はインポートルールにバグ有り(2004-07-03)
XSL文章Aがxsl:importでXSL文章Bをインポートする。このBはXSL文章Cをxsl:includeでインクルードしており、C内ではBのトップレベル変数xを使用するとする。
PHP5.0.0のDOM Functionに関する諸情報(2004-07-21)
PHP4系列からDOMの仕様が大分変わったため、移行が若干面倒だ。消滅してしまったメソッドもある。
連絡先、リンク、転載や複製などについては「サイト案内」をご覧ください。Powered by HIMMEL