53件中 46-50件目     [ ... 2 3 4 5 6 7 8 9 10 11 ]

「hoge○○hoge○○○○hoge○○hoge○」という文字列があり、PHP+正規表現で行頭以外にあるhogeを全てHOGEに置換して、「hoge○○HOGE○○○○HOGE○○HOGE○」としたかったのだが、やり方がよくわからなかった。 行頭にある「hoge」マッチする正規表現であれば以下のように簡単に書けるが、行頭以外にあるhogeにマッチする正規表現がわからなかったのでいろいろと試してみた。

preg_replace('/^hoge/', 'HOGE', $text);

PHPのパースモードの開始タグは普通、<?php ?>を使い、その省略形として<? ?>があることは知っていたが、これ以外に2つも書き方があるとは知らなかった。 正確に言えば、1つは忘れていただけだったが。

1つ目は、<% %>。
これはphp.iniのasp_tagsを変更する必要がある。 設定ファイルを見ていたときに、「こんなこともできるのか」と思ったが、すっかり忘れていた。

2つ目は、<script language="php"> </script>。
JavaScriptのような書き方だ。 これは書くのがめんどくさい上に、この書き方をサポートしていないエディタもあるようで、良い点は特に見当たらない。


PHPでは、多くの場合HTMLなどのテキストファイルを出力するが、画像ファイルやzip圧縮されたファイルなども出力することができる。

簡単な例を挙げると、以下のように書くだけでJPEGファイルを出力できる。

<?php
	$path = './img/xxx.jpg'; // JPEGファイルのパス
	header('Content-Type: image/jpeg');
	readfile($path);
?>

同様に、pngファイルや動画ファイルなども、それに対応したContent-typeを付けてやることで出力できる。 IEはContent-Typeがなくても認識してくれるが、そうでないブラウザも多いので注意。

ファイル名を指定したい場合には以下のヘッダを加える。

header('Content-Disposition: inline; filename="'.$name.'"');

このように画像などのファイルをPHPから出力することで、HTML以外のファイルでユーザ認証などのアクセス制御を行うこともできる。 出力するファイルを公開ディレクトリ(public_html)の外に置けば直接アクセスされることもない。

IEではいくつかの状況で以下のようなエラーが表示されるバグがある。

Internet Explorer では、<ファイル>をダウンロードできません。 このインターネットのサイトを開くことができませんでした。要求されたサイトが使用できないか、見つけることができません。後でやり直してください。
これは以下のヘッダを加えることで防ぐことができる。
header('Cache-Control: public');


PHPは、プログラムをHTMLの中に埋め込むように書くことができるというのが利点の一つである。 単純にHTMLに文字を出力するコードを埋め込む場合、以下のように書く。

<?php echo 'xxxx'; ?>

これは、short_open_tagの設定がonになっていると、以下のように書くこともできる。

<?= 'xxxx'; ?>

さらに、最後の「;」を省略して以下のように書くこともできる。

<?= 'xxxx'?>

ただし、以下のように書くことはできない。

<?php= 'xxxx'; ?>

この省略記法は便利ではあるが、short_open_tagをonにすることで、

<?xml version="1.0"'; ?>
などがphpコードと認識されてしまうため、わざわざ以下のように書かなければならなくなる。
<? echo '<?xml version="1.0"?>'; ?>

また、short_open_tagがoffから変えられない環境ではソースコードを書き換えなければならないことになるので、short_open_tagをonにすることはオススメしない。


PHPの標準関数では、エラーが発生した場合、エラーメッセージと共に、そのエラーが発生したソースファイルとその行数を表示してくれる。

それと同じことを自作の関数で実現する場合、定義済み定数の「__FILE__」や「__LINE__」を使う方法もあるが、user_error関数(またはtrigger_error関数)を使えば、もっと簡単に実現できる。

user_error("エラーが発生しました。", E_USER_ERROR);

この関数ではエラータイプを指定できるので、php.iniや、.htaccess、error_reporting関数などで、出力するエラータイプを限定することで、エラーの表示・非表示を簡単に切り替えることができる。


53件中 46-50件目     [ ... 2 3 4 5 6 7 8 9 10 11 ]