一般的に、DOMを直接使ってXML文書を処理すると、中国語が含まれていると文字化けしてしまいます
次に、iconv()関数を使って、中国語の文字化けを防ぐためのエンコード変換を実装します。
コードは次のとおりです | コードをコピー | ||||
//xml ファイルを読み込みます $xmlDoc = 新しい DOMDocument(); $xmlDoc->load('http://127.0.0.1/holiday.xml'); // XML ファイル内のすべての年を取得します $years = $xmlDoc->getElementsByTagName("年"); //毎年処理します foreach($year を $year){ //特定の年の値を取得します $yearNames = $year->getElementsByTagName("yearName"); $yearName = $yearNames->item(0)->nodeValue; echo $yearName.'year'.''; // 今年の祝日をすべて取得します $holidays = $year->getElementsByTagName("休日"); //各休日を処理します foreach($holidays as $holiday){ //祝日の名前を取得します $holidayNames = $holiday->getElementsByTagName("holidayName"); $holidayName = $holidayNames->item(0)->nodeValue; echo iconv('utf-8','gb2312', $holidayName).': '.''; // 休日の特定の日付を取得します $daysOffs = $holiday->getElementsByTagName("daysOff"); $daysOff = $daysOffs->item(0); $froms = $daysOff->getElementsByTagName("from"); $from = $froms->item(0)->nodeValue; $tos = $daysOff->getElementsByTagName("to"); $to = $tos->item(0)->nodeValue; echo '休日は:'.$from.' から '.$to.' $overTimes = $holiday->getElementsByTagName("overTime"); $overTime = $overTimes->アイテム(0); $days = $overTime->getElementsByTagName("日"); //判断により、祝日があれば表示、無い場合は表示されません if($days->length!=0){ echo '休日を次のように調整します:'; foreach($days as $day){ エコー $day->nodeValue.'; } エコー ''; } エコー ''; } } ?> xml文書
|