[PHP-users 30374] Re: xmlを使うと真っ白になる
朧月
oboro @ deneb.freemail.ne.jp
2006年 9月 20日 (水) 09:19:30 JST
お世話になってます、朧月です。
papa pahoo wrote (2006/09/19 23:47):
> パパぱふぅです。差し支えなければ、使用しているXML関数を紹介してください。
一覧を作るコードは、以下のようになってます。
header('Content-type:text/html;charset=EUC-JP');
//現在の日時を取得
$Pdate = time();
//xmlファイル処理
$xmlfile = "xmldata/database.xml";
$dom = domxml_open_file($xmlfile);
$doc = $dom->document_element();
//現在のデータ読み取り
$datas = $doc->get_elements_by_tagname("data");
foreach($datas as $data){
$obj = $data->get_elements_by_tagname("file-name");
$xfile_name = $obj[0]->get_content();
$obj = $data->get_elements_by_tagname("content");
$xcontent = $obj[0]->get_content();
$obj = $data->get_elements_by_tagname("up-date");
$xup_date = $obj[0]->get_content();
//文字コードをそろえる
$xfile_name =
mb_convert_encoding($xfile_name,'EUC-JP','UTF-8');
$xcontent = mb_convert_encoding($xcontent,'EUC-JP','UTF-8');
$xup_date = mb_convert_encoding($xup_date,'EUC-JP','UTF-8');
//古いデータを削除
$Ddate = strtotime($xup_date);
$Cdate = $Pdate - $Ddate;
if ($Cdate > 90*24*60*60){
//ファイルを削除
$path = "data/" . $xfile_name;
unlink($path);
//XMLファイルの登録を削除
$doc->remove_child($data);
}
}
//保存して開き直し
$dom->dump_file($xmlfile,FALSE,TRUE);
$dom = domxml_open_file($xmlfile);
$doc = $dom->document_element();
echo "<h3>アップロードファイル一覧</h3>";
echo "<table border=1 >";
echo "<tr><td width=200>ファイル名</td><td width=400>ファイル内容</td>" .
"<td width=200>アップ日(年-月-日 時:分:秒)</td></tr>";
//現在のデータ読み取り
$datas = $doc->get_elements_by_tagname("data");
foreach($datas as $data){
$obj = $data->get_elements_by_tagname("file-name");
$xfile_name = $obj[0]->get_content();
$obj = $data->get_elements_by_tagname("content");
$xcontent = $obj[0]->get_content();
$obj = $data->get_elements_by_tagname("up-date");
$xup_date = $obj[0]->get_content();
//文字コードをそろえる
$xfile_name = mb_convert_encoding($xfile_name,'EUC-JP','UTF-8');
$xcontent = mb_convert_encoding($xcontent,'EUC-JP','UTF-8');
$xup_date = mb_convert_encoding($xup_date,'EUC-JP','UTF-8');
//テーブルにデータを追加
echo "<tr>";
echo "<td>" . "<a href=./data/" . $xfile_name . " >" . $xfile_name .
"</a></td>";
echo "<td>" . $xcontent . "</td>";
echo "<td>" . $xup_date . "</td>";
echo "</tr>";
}
echo "</table>";
echo "<br /><br />";
//アップロードページへ戻る
echo "<form enctype='multipart/form-data' action='index.html'>
<input type='submit' value='アップロードのページへ戻る' />
</form>";
なんか見づらくて申し訳ありません。こう、段落の編集がうまくいきません。
> 以前、WindowsXP + PHP 4.4.x を使っていて、domxml_open_file で直接XMLファ
> イルを開くと、開けるときと開けないときがありました。なぜ場合分けが発生し
> てしまうのか、とうとう原因が掴めなかったので、以下のように、いったん文字
> 列変数 $str に取り込んでから、DOM XML関数に渡したことがあります。
> $str = "";
> while (!feof($fp)) {
> $s = fgets($fp);
> $str .= $s;
> }
> $dom = domxml_open_mem($str);
うーん、結果的にですが、私のコードはdomxml_open_file()に文字列を渡すよう
なコードになってる気がします。
--
朧月
mailto:oboro @ deneb.freemail.ne.jp
PHP-users メーリングリストの案内