XMLを配列に読み込む

2006/07/03 | XML

最近巷でもPHPでXMLを取り扱うための書籍が多く出回っている。しかしどれもこれもPHP5だ。無論PHP5でもいいのだが、世の中でPHP5がどのくらい広まっているか、それは疑問だ。事実上PHPのバージョンは4が業界標準だ。PHP5であれば非常に簡単にXMLを取り扱えるようになっているような感じだが、自分自身もPHP4の環境でしか開発をしていないし、レンタルサーバの大部分がPHP4なのだから、そこから攻略していくしか手はないだろう。とはいっても文献がない・・・。
とある開発でどうしてもXMLを使う必要に迫られて以下のコードを書いた。これだけでXMLを配列に格納することができる。
<?php
$parser=xml_parser_create();
$data=file_get_contents("data.xml");
xml_parse_into_struct($parser,$data,$vals,$index);
xml_parser_free($parser);
?>
xml_parse_into_struct関数が名前の通り、XMLをパースして構造体に放り込んでくれる関数だ。上記関数の第3引数、第4引数にパース結果が格納される。ここで第3引数(ここでは$vals)に個々のデータが格納され、$indexにXMLの構造が格納される(いずれも配列として扱うことができる)。言い換えればこの2つの配列でXMLをあらわしていることになる。
具体的にどのような配列になるのかは簡単なXMLを上記コードで流し、$valsや$indexをprint_rして見比べれば想像がつくだろう。
自分の知識がもう少しアップしたら、今度はPearで処理することを考えてみることにする。

Read the rest of this entry »

PHPで日本語メールを送信する際のメモ

2006/07/03 | マイPHPメモ

PHPで日本語メールを送信するときの注意事項をいくつか(mb_send_mailで送ることを前提)。

○以下の2行を必ず指定(文字コードは必要応じて適宜)。
<?php
mb_language(‘japanese’);
mb_internal_encoding(‘EUC-JP’);
?>

○76文字ルール
第4引数を指定する際に、一行76文字以内となるよう調整する必要有り。

○To、Cc、Bccのメールの書式は「名前 <user@example.com>」と記述。

○本文は基本的に自動変換してくれるはず。それ以外のところで文字化けが発生する場合はmb_encode_mimeheaderを使ってエンコードする(必要に応じて適宜やる必要がある)。

「必要に応じて」と書いたのはうまくいったりうまくいかなかったりする場合があるからで、全ての場合を考える暇もないから。トラブルが起こったときに対応するほうが結局コストが安くつく。


守谷市(まちの情報ポータル) 無料アンケートレンタルjpForm.net