PHPでCSSを生成することによるテクニックが紹介されています - PHPプロ!ニュース
PHPでCSSを作成するテクニック
「PHP」カテゴリーアーカイブ
PHP Text DB API
php5.2.0で Indirect modification of overloaded property が発生する
mailparse
http://jp2.php.net/manual/ja/ref.mailparse.php
(Windows php.ini)
extension=php_mailparse.dll
<?php
$fp = 'C:/Temp/mail.txt';
print_r(mailparse_msg_get_part_data(mailparse_msg_parse_file($fp)));
?>
PHP5.2.0のgo-pear.batでエラー
go-pear.pharにバグあり。
http://pear.php.net/go-pear.pharからダウンロードして、PEARディレクトリに保存してから、go-pear.batを実行すればOK。
http://d.hatena.ne.jp/shimooka/20061105/1162714257
インストール、php.ini(Windows)
extension_dir = "c:/php5/ext"
extension=php_mbstring.dll extension=php_exif.dll extension=php_gd2.dll extension=php_mysql.dll extension=php_mysqli.dll extension=php_pgsql.dll extension=php_pdo.dll extension=php_pdo_pgsql.dll extension=php_pdo_mysql.dll extension=php_sqlite.dll extension=php_xsl.dll zend_extension_ts="c:/php5/ext/php_xdebug.dll"
include_path="."
変になったら、以下の手順で復旧。
PEARの環境がおかしくなった場合は
実行前に、C:\Windows\pear.iniを削除しておく。
include_path=".;c:\php5\pear"
# php5 setting LoadModule php5_module c:/php5/php5apache2_2.dll AddType application/x-httpd-php .php .phtml PHPIniDir "c:/php5"
unlink
[PHP-users 23600] Re: バージョンアップ後にunlinkでエラー
> オープンしたままのファイルに対して削除(unlink)するなんて
> ルール違反ですしOS、バージョン、タイミングによって
> 挙動が変化するのは当然です。
まさにおっしゃる通りで、基本的には OS によって挙動が変化するのは当り
前ですが、UNIX 系の OS では一時的に作成したテンポラリファイルを確実に
消す方法としては
open 直後に unlink して、そのまま使いつづける
というのは定番的な tips だったりします。
というのは、どれかのプロセスがそのファイルをオープンしていた場合、そ
のオープンしている最後のプロセスがファイルを close するまで、そのファ
イルは存在しつづけることが保証されるからです。確か POSIX でもそう決まっ
ていたはず。
どういうときに嬉しいかというと、先ほども書いたようにプログラム内で一
時ファイルを作るときです。プログラム内で一時ファイルを使用終了したら
unlink するという処理でも良いのですが、それではエラーで終了するときに
もいちいち unlink しなければなりませんし、予想外の異常終了の場合は一時
ファイルが残ったままになってしまいます。open 直後に unlink しておけば、
例えどんなケースであれ、プロセスが終了したら確実にファイルは消去されま
す。
array_walkの三番目の引数はarray
PHP: array_walk - Manual
bool array_walk ( array &array, callback funcname [, mixed userdata] )
通常、 funcname は引数を二つとります。 array パラメータの値が最初の引数、 キー/添字は二番目の引数となります。 オプションの userdata パラメータが指定された場合、 コールバック関数 funcname への三番目の引数として渡されます。
※このuserdataはarrayで受け渡しする。
入力文字コード変換
内部エンコーディングと出力エンコーディングが異なる場合は、php.iniでは入力エンコーディング変換をせず、mb_convert_variablesなどで、自力で変換する。※
※mb_convert_variablesでは、だめな場合がある。
これは、
mb_convert_variables() は、エンコーディング検出の ためにArrayまたはObjectの文字列を結合します。これは、 エンコーディング検出は短い文字列では失敗する傾向があるためです。このため、 1 つの配列またはオブジェクトにエンコーディングを混ぜることはできません。
だからだろうか?
なので、
array_walkとmb_convert_encodingで再帰処理する。
また、
変換するのは$_POSTのみにする。$_GET、$_COOKIE、$_REQUESTは変換しない。
例:
function convert_encoding(&$item, $key, $encoding){
if (is_array($item)){
array_walk($item, 'convert_encoding', $encoding['to'], $encoding['from']);
} else {
$item = mb_convert_encoding($item, $encoding['to'], $encoding['from']);
}
}
//array_walk($_GET, 'convert_encoding', array('to' => $internal_encoding, 'from' => $http_output));
array_walk($_POST, 'convert_encoding', array('to' => $internal_encoding, 'from' => $http_output));
//array_walk($_COOKIE, 'convert_encoding', array('to' => $internal_encoding, 'from' => $http_output));
//array_walk($_REQUEST, 'convert_encoding', array('to' => $internal_encoding, 'from' => $http_output));
mbstring Shift_JISを使う場合
入出力にShift_JISを使用する場合は、以下のmbstring設定が必要。
※このやり方はよくない。下記を参照。
mbstring.encoding_translation = On (php.ini または .htaccess)
mbstring.http_input = auto (php.ini または .htaccess)
mbstring.language = Japanese (php.ini または .htaccess またはスクリプト)
[php.ini]
;; HTTP 入力変換を有効にする
mbstring.encoding_translation = On
;; HTTP 入力エンコーディング変換を auto に設定
mbstring.http_input = auto
[.htaccess]
# shift_jis の場合のためのmbstring設定
# HTTP 入力変換を有効にする
php_value mbstring.encoding_translation 1
# HTTP 入力エンコーディング変換を auto に設定
php_value mbstring.http_input auto
[スクリプト]
mb_language($language);
mb_internal_encoding($internal_encoding);
mb_http_output($http_output);
//mb_detect_order('auto');
mb_substitute_character('none');
PHP: マルチバイト文字列関数 (mbstring) - Manual
※このやり方はよくない。
Shift_JISの場合はこれでいけるが、エンコードを動的に切り替える場合、UTF-8で入力エンコードがおかしくなる。
php.iniや.htaccessで、入力エンコーディング変換をせず、スクリプトで変換が必要な場合だけ、自力で変換する方がよい。
入力文字コード変換